swift
e0df8ffd - Runtime: Fix runtime type resolution when mangled names refer to protocol extensions with Self same type constraints.

Commit
1 year ago
Runtime: Fix runtime type resolution when mangled names refer to protocol extensions with Self same type constraints. If a type or opaque type descriptor appears inside of a protocol extension of the form: ``` extension P where Self == Nominal { ... } ``` then the runtime representation of the extension context was interpreted by the runtime demangler as a nominal type extension, even though the parameterization is on the `<Self>` generic signature of the protocol extension and not the generic signature of the nominal type. This would cause spurious rejection of mangled names referencing the extension context because we mistakenly thought that the type arguments mismatched with the nominal type signature rather than matching them to the extension context. Add some code to `_findExtendedTypeContextDescriptor` to detect when an extension is a protocol extension with a `Self == SameType` constraint, and pass the extension along rather than treating it as a nominal type extension. Fixes rdar://130168101.
Author
Committer
Parents
Loading