Avoid unnecessary under-constrained implicit searches #14353
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.
In some situations we only call
constrainResult
for its side-effectsand ignore its result, but
constrainResult
callsnecessarilyCompatible
which will callviewExists
as a last-try.Since
viewExists
doesn't have side-effects we might as well skip it,and it turns out that using
NoViewsAllowed.constrainResult
doesexactly that.
This leads to a significant speed-up (from ~8s to sub-second with a hot
compiler) with the test case from #14333 (most likely this is because at
the point where we call
constrainResult
we haven't accumulated anyconstraint from the arguments of the application, so implicit search is
free to go on a wild goose chase).
I also removed obsolete comments in this method.
Fixes #14333.