[4.2] [SILGen] Ensure type params in witness method conformances match the witness method signatures. #16514
+31
−2
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.
A witness method of a class can have its generic parameters rephrased: a
parameters of the class, like τ_0_0, get pushed to the next depth, like τ_1_0,
to make way for a τ_0_0 parameter with a τ_0_0: Class<...> subclass
constraint. When this wasn't accounted for, IRGen would find that it couldn't
satisfy conditional requirements on the rewritten type parameters, and they'd
incorrectly be passed as additional arguments of a witness method thunk rather
than pulled out of the Self witness table's private area inside the thunk.
Fixes rdar://problem/40078863.