Repository navigation
Commit a3f8823
Z User
Author: Burapa-J. Two leak paths let an outlived loan look dead:
loop-carried loans were compared against a raw stmt index (l.last) that
precedes the loop, so an in-loop conflicting access escaped A2/A3; and
alias extension parsed `q := move p` as non-Ident (Expr::Move) and
returned early, so p's slot-loan window was never extended to q.
loans.rs:
- check_a2_conflict + map-slot conflict find: idx <= effective_loan_last(st, l)
(loop-extended window) instead of raw l.last
- alias source resolution: unwrap Paren AND Move wrappers in a loop
before the Ident check (move-wrapped aliases now tracked)
- diagnostic note reports eff_last (the real non-lexical window end)
Verification (merged main, 3-stage battery):
- cargo test --workspace: exit 0, 488 suites, 3126 passed, 0 failed
- addr_of_loan standalone: 8/8 (new loop-carried O8/A2 + move-alias
fixtures all reject with HYB-E3102/E3101 as specified)
- integration files: 479 on disk (extends existing suite, no new file)
- corpus harness: 135/135 verdict agreement, tripwire not fired
- differential loop FULL: 45/45 accept-side, 90/90 reject-side
- trial merge clean (2 files), no in-merge fixture fixups
CREDIT: @Burapa-J
2 files changed
Lines changed: 61 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
| 426 | + | |
426 | 427 | | |
427 | 428 | | |
428 | 429 | | |
429 | 430 | | |
430 | | - | |
| 431 | + | |
431 | 432 | | |
432 | 433 | | |
433 | 434 | | |
| |||
538 | 539 | | |
539 | 540 | | |
540 | 541 | | |
541 | | - | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
542 | 547 | | |
543 | 548 | | |
544 | 549 | | |
| |||
617 | 622 | | |
618 | 623 | | |
619 | 624 | | |
| 625 | + | |
620 | 626 | | |
621 | 627 | | |
622 | 628 | | |
623 | 629 | | |
624 | 630 | | |
625 | | - | |
| 631 | + | |
626 | 632 | | |
627 | 633 | | |
628 | 634 | | |
| 635 | + | |
629 | 636 | | |
630 | 637 | | |
631 | 638 | | |
| |||
636 | 643 | | |
637 | 644 | | |
638 | 645 | | |
639 | | - | |
| 646 | + | |
640 | 647 | | |
641 | 648 | | |
642 | 649 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
0 commit comments