sempass2: lift capture restriction #1427
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Procedures useable in both compile- and run-time contexts can now close
over compile-time-only locals even if nested in another procedure
usable in both contexts.
Fixes #1425.
Details
Given the nested procedures
a: b: c:
, wherec
closes over a localof
a
,c
effectively captures fromb
andb
captures froma
.A procedure usable in both a compile- and run-time context may capture
from a compile-time-only procedure, so the aforementioned should work
when
a
is a compile-time-only procedure and the others are not, sincec
can legally borrow fromb
andb
froma
, but it was disallowedin practice.
The arbitrary restriction is now lifted, and the code implementing the
test restructured to be easier to understand.