More precise type for typed patterns, less precise for literal patterns #8710
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
x @ Nil
,Nil
is a stable identifier pattern and will be compiledto an
==
test, so the type ofx
is unrelated to the type ofNil
.This was handled correctly before this commit, but the check to use the
moe restrictive patten typing was too wide and also included typed
patterns like
x: Nil.type
, even though such patterns compile toeq
tests and therefore it's safe to assume that
x
has typeNil.type
.Additionally, a literal pattern will also be compiled to an
==
testand therefore should be less precisely typed, like a stable identifier
patterns.