Commit ad651d3
committed
fix(rust): require a same-file struct definition for the unit-struct heuristic
The `^[A-Z]` guard on a bare-identifier let-value (`let x = TypeName;`)
matched unit enum variants too — `None`/`Ok` (Option/Result, always in
scope) and any custom fieldless variant brought in via `use Enum::Variant`
parse identically to a unit-struct reference. `x` was typed as `None`
rather than recognized as untyped, since nothing distinguished the two
shapes. Now requires a matching `kind === 'struct'` definition in the same
file before seeding the typeMap entry — mirrored in both the WASM
(rust.ts) and native (rust_lang.rs) extractors, with a regression test in
each mirroring the existing seeds_unit_struct_value_type_map coverage.
Impact: 2 functions changed, 3 affected1 parent 03a0d2a commit ad651d3
3 files changed
Lines changed: 48 additions & 2 deletions
File tree
- crates/codegraph-core/src/extractors
- src/extractors
- tests/parsers
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
397 | 397 | | |
398 | 398 | | |
399 | 399 | | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
400 | 405 | | |
401 | 406 | | |
402 | 407 | | |
| |||
432 | 437 | | |
433 | 438 | | |
434 | 439 | | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
435 | 446 | | |
436 | 447 | | |
437 | | - | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
438 | 451 | | |
439 | 452 | | |
440 | 453 | | |
| |||
649 | 662 | | |
650 | 663 | | |
651 | 664 | | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
652 | 674 | | |
653 | 675 | | |
654 | 676 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
295 | 295 | | |
296 | 296 | | |
297 | 297 | | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
298 | 303 | | |
299 | 304 | | |
300 | 305 | | |
| |||
309 | 314 | | |
310 | 315 | | |
311 | 316 | | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
312 | 323 | | |
313 | | - | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
314 | 330 | | |
315 | 331 | | |
316 | 332 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
122 | 130 | | |
123 | 131 | | |
124 | 132 | | |
| |||
0 commit comments