Keep NeverType isExplicit-flag in TypeCombinator::intersect()#2112
Merged
ondrejmirtes merged 1 commit intophpstan:1.9.xfrom Dec 15, 2022
Merged
Keep NeverType isExplicit-flag in TypeCombinator::intersect()#2112ondrejmirtes merged 1 commit intophpstan:1.9.xfrom
ondrejmirtes merged 1 commit intophpstan:1.9.xfrom
Conversation
staabm
commented
Dec 14, 2022
Contributor
Author
There was a problem hiding this comment.
these lines dropped the explicitness flag before this PR
staabm
commented
Dec 14, 2022
Comment on lines
3510
to
3517
Contributor
Author
There was a problem hiding this comment.
here we have a test which now returns a explicit NeverType. all other tests where adjusted to compensate the additional implicit information in the description. no changes regarding the typtes itself.
130cecc to
9fa5af2
Compare
9fa5af2 to
6fff815
Compare
Member
|
Thank you! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
inspired by #2110 where we addd logic based on NeverType explicitness, I figured it would be helpful if the TypeCombinator would keep the exlicitness, instead of create a new non-explicit NeverType every-time it combines NeverTypes'.
Before this PR there was no way to differentiate between NeverType explicit and implicit - I therefore added the same "hack" we use to differentiate explicit and implicit MixedType in tests.
this could be followed up by changes in e.g.
phpstan-src/src/Reflection/InitializerExprTypeResolver.php
Lines 500 to 502 in b76e7b1
InitializerExprTypeResolverwith this pattern)