[ty] fix panic when instantiating a type variable with invalid constraints #21663
+181
−58
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.
Summary
This PR fixes a panic that occurs with code like this:
The panic occurs because the constraints of
Tare inferred to beUnknown | Unknown.Calling
to_instanceon such a type results inUnknown, but the panic occurs because contexts expecting constraints on type variables only accept union types.A fundamental solution to this problem would be to define a new struct
TypeVarConstraintsto hold each constraint individually, rather than trying to store everything in aUnionType. There may be additional cost for converting between this and a union type. I'll ask codspeed if this is actually costly.Panic log
Test Plan
New corpus test