Checks the intersection type if the magic method does not exist #5473
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.
The original issue we had was with the type
S3Client & MockObject
. Since S3Client has magic methods, calling MockObject methods on it (->expects, ->method, etc) was failing. UsingMockObject & S3Client
would work, because the method is detected on MockObject before checking S3Client. However, an intersection type should still check both, and the order should not matter (I think).I think the issue is that when a magic method was detected as missing, it would stop analysis and not validate union or intersection types. The tests I added replicate the problem well, however my confidence in how I fixed it is about 10%. I would need help to validate the solution, I did this in about 15 minutes and didn't understand all the implications. At least it's a starting point!
Thanks!