Do not abort constructing TypeAlias if only type parameters hold us back. #20162
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 #20135.
I am not fully certain that this is the right way. If the type alias can be reasonably constructed and only type parameters prevent that, we can create an "almost" equivalent alias with all placeholder-bearing typevars replaced with their "simple" equivalents with default values/bound/default values. This would cause current iteration to not emit some parameterization errors later, but, since we already defer the alias as a whole, we will recheck all of them again.
This obviously adds some pointless work (we check parameterization that will not be used later), but probably is not that big of a deal, recursive aliases are relatively rare in wild. If this turns out to be a bottleneck, we can add a
parameters_readyflag to aliases and skip the heavy parts if it is False, but I think it isn't necessary now.