Fix #4884: asSeenFrom on incorrect prefix in type applications #4900
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.
WIP fix #4884. PR for testing. Currently causing a stackoverflow on a benchmark, but only with the non-bootstrapped compiler; what's worse is that the stackoverflow doesn't go away when increasing stack size.
Approach
In this code we fetch the type parameter bounds from the definition, so we must
substitute their definition using
asSeenFrom
with the correct prefix.The correct prefix is however hard to find:
TypeApplications.typeParams
findsa
self: TypeRefs
(after however many steps), the correct prefix isself.prefix
.In fact, a compositional typing rule would obtain the bounds from the type (or,
well, kind) of the type constructor; that would avoid the need for using
asSeenFrom
. We only have a way to obtain such a kind forNamedType
(where wecan take the
info
). That might be enough, but there might be another way tofix this.