Ensure ExpressionList#possibleReturnTypes is accurate after getConvertedExpression #8154
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.
Problem
During the implementation of type properties, I had some issues with determining the possible return types of a converted ExpressionList. If I converted
me and {tool}
to Player and ItemType, it would give me a EL with the possibleReturnTypes of Player and Object. In getConvertedExpression, it was takinggetReturnType
of the component expressions and using that for possible return types, rather than asking forpossibleReturnTypes
to get the most accurate information.Solution
The solution was to add all the possibleReturnTypes from the elements into a set and use that as the list's possible return types. This avoids unnecessary supertypes and gives the most accurate information.
Testing Completed
Manual confirmation. This will be tested further once type properties is implemented.
Supporting Information
Completes: none
Related: none