File tree Expand file tree Collapse file tree 5 files changed +18
-5
lines changed Expand file tree Collapse file tree 5 files changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -308,6 +308,9 @@ SwiftMangledName SwiftMangler::visitTypeAliasType(const swift::TypeAliasType* ty
308308
309309SwiftMangledName SwiftMangler::visitArchetypeType (const swift::ArchetypeType* type) {
310310 auto ret = initMangled (type) << fetch (type->getInterfaceType ());
311+ if (const auto super = type->getSuperclass ()) {
312+ ret << ' :' << fetch (super);
313+ }
311314 for (const auto * protocol : type->getConformsTo ()) {
312315 // Including the protocols in the mangled name allows us to distinguish the "same" type in
313316 // different extensions, where it might have different constraints. Mangling the context (i.e.
Original file line number Diff line number Diff line change 11| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | no | getNumberOfProtocols: | 1 |
22| Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | no | getNumberOfProtocols: | 1 |
3+ | Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | yes | getNumberOfProtocols: | 0 |
4+ | Base | getName: | Base | getCanonicalType: | Base | getInterfaceType: | Base | hasSuperclass: | yes | getNumberOfProtocols: | 0 |
35| Param | getName: | Param | getCanonicalType: | Param | getInterfaceType: | Param | hasSuperclass: | no | getNumberOfProtocols: | 0 |
46| ParamWithProtocols | getName: | ParamWithProtocols | getCanonicalType: | ParamWithProtocols | getInterfaceType: | ParamWithProtocols | hasSuperclass: | no | getNumberOfProtocols: | 2 |
57| ParamWithSuperclass | getName: | ParamWithSuperclass | getCanonicalType: | ParamWithSuperclass | getInterfaceType: | ParamWithSuperclass | hasSuperclass: | yes | getNumberOfProtocols: | 0 |
Original file line number Diff line number Diff line change 1- | Base | 0 | primary_archetypes.swift:3 :1:3 :13 | P |
2- | Base | 0 | primary_archetypes.swift:4 :1:4 :14 | P2 |
1+ | Base | 0 | primary_archetypes.swift:4 :1:4 :13 | P |
2+ | Base | 0 | primary_archetypes.swift:5 :1:5 :14 | P2 |
33| ParamWithProtocols | 0 | file://:0:0:0:0 | Equatable |
4- | ParamWithProtocols | 1 | primary_archetypes.swift:3 :1:3 :13 | P |
4+ | ParamWithProtocols | 1 | primary_archetypes.swift:4 :1:4 :13 | P |
55| ParamWithSuperclassAndProtocols | 0 | file://:0:0:0:0 | Equatable |
6- | ParamWithSuperclassAndProtocols | 1 | primary_archetypes.swift:3 :1:3 :13 | P |
6+ | ParamWithSuperclassAndProtocols | 1 | primary_archetypes.swift:4 :1:4 :13 | P |
Original file line number Diff line number Diff line change 1+ | Base | S |
2+ | Base | S2 |
13| ParamWithSuperclass | S |
24| ParamWithSuperclassAndProtocols | S |
Original file line number Diff line number Diff line change 11class S { }
2+ class S2 { }
23
34protocol P { }
45protocol P2 { }
@@ -13,7 +14,12 @@ class Generic<Base> {}
1314extension Generic where Base : P {
1415 func f( _: Base ) { }
1516}
16-
1717extension Generic where Base : P2 {
1818 func f( _: Base ) { }
1919}
20+ extension Generic where Base : S {
21+ func f( _: Base ) { }
22+ }
23+ extension Generic where Base : S2 {
24+ func f( _: Base ) { }
25+ }
You can’t perform that action at this time.
0 commit comments