Skip to content

fix(sema): keep break generation advances within their loop - #1418

Merged
sanohiro merged 1 commit into
mainfrom
fix/loop-generation-advance-scope
Oct 25, 2026
Merged

sanohiro merged 1 commit into
mainfrom
fix/loop-generation-advance-scope

Conversation

@sanohiro

Copy link
Copy Markdown
Owner

Nested loops could reject a still-live outer array as expired. A break edge collected generation advances from frames preceding its loop, so later joins could age the outer Current into an ended Prior generation. Stop collecting at the existing innermost Loop marker, in both statement and value-bearing break walkers; completed inner advances still propagate to the parent normally.

The language, finite generation model, runtime and cleanup stay unchanged. Plan245 records the invariant and closure matrix.

Validation: parameterized whole/per-unit loop depth and owner placement, branch/else/Try/map_err/return/value-break composition, actual replacement/temporary expiry negatives, imported generic native execution and cold/hit replay; direct frame invariant and existing borrow/loop/temporary/owned-composition owners. The authenticated MTP comparison and original failing source pass both frontends. Fresh independent full-diff review, final preflight, bounded gate and Clippy passed.

@sanohiro
sanohiro marked this pull request as ready for review October 25, 2026 05:07
@sanohiro
sanohiro merged commit 928e608 into main Oct 25, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant