Relax isExpressionFresh
and improve aliasing error messages
#1468
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.
Relax the condition over which an expression is considered to be "fresh" to include bindings of
match
expression and seeing through non-recursive function.It also changes the rule for
Let
for which I'm not so sure about:Before:
Let(vd, e, b)
expression fresh iffe
is fresh and b as well, where we considervd
as fresh when recurring onb
Now:
Let(vd, e, b)
fresh iffb
is fresh, where we addvd
as a fresh binding when recurring onb
providede
is fresh.These changes allows to accept
FreshExpr.scala
(which was rejected before).It also improves a bit the "illegal aliasing" error messages.