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.
Pulling in upstream PR 10090.
This is needed for let mutable, because it fixes bugs in how
lambda/simplif.ml
deals with mutable variables. We initially thought we could get away with a small tweak to simplif to prevent a let binding likelet mutable x = .. in ..
from being substituted away. But there are trickier cases where subsequent non-mutable lets whose bound variable is defined in terms ofx
are themselves substituted away (which is bad, as the programmer wanted the value ofx
at the place it was mentioned). Preventing that requires tracking which variables are mutable in lambda, which is what this PR does, so we may as well just take all of it.The backport was mostly straightforward, except that
translcomprehension.ml
needed a lot of work because it used the removedVariable
let kind. The printing of lets inprintlambda.ml
also needed manual merging.