Record type inference fails when 'var' and <> mixed #4719
+56
−32
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.
Fixes #1361
What it does
In JLS Section 18.5.5, item 5 says "Unlike normal resolution, in this case resolution skips the step that attempts to produce an instantiation for an inference variable from its proper lower bounds or proper upper bounds; instead, any new instantiations are created by skipping directly to the step that introduces fresh type variables."
However, the entire processing was missed via the !recordTypeInference condition which implied that the " α1 = T1, ..., αn = Tn" were consequently missed being incorporated with the current bound set as per this line in JLS Section 18.4
The fix addresses this part.
Fixes issue #1361
How to test
The reviewer can use the code mentioned in issue #1361 to test the fix.
Author checklist