@@ -25,6 +25,7 @@ enum GenericOuter<T, U> {
25
25
26
26
struct Inner { }
27
27
struct GenericInner < T, U> { }
28
+ struct InnerWhere where T == GenericOuter < U , U > { }
28
29
}
29
30
30
31
func blackHole( _: Any ... ) { }
@@ -59,6 +60,7 @@ enum STSContainer<T : STSTagProtocol> {
59
60
class Superclass { }
60
61
class Subclass < U> : Superclass where T == STSOuter {
61
62
class ExtraNested : Superclass { }
63
+ class ExtraNestedWhere : Superclass where U: Subclass < T > { }
62
64
}
63
65
64
66
class GenericSuperclass < U> { }
@@ -122,13 +124,17 @@ extension STSContainer℠ where T == STSOuter {
122
124
123
125
// DEMANGLE-TYPE: $s13nominal_types12GenericOuterO5InnerVyxq__GD
124
126
// DEMANGLE-TYPE: $s13nominal_types12GenericOuterO0C5InnerVyxq__qd__qd_0_GD
127
+ // DEMANGLE-TYPE: $s13nominal_types12GenericOuterO10InnerWhereVyACyq_q_Gq__GD
125
128
// CHECK-TYPE: GenericOuter<τ_0_0, τ_0_1>.Inner
126
129
// CHECK-TYPE: GenericOuter<τ_0_0, τ_0_1>.GenericInner<τ_1_0, τ_1_1>
130
+ // CHECK-TYPE: GenericOuter<GenericOuter<τ_0_1, τ_0_1>, τ_0_1>.InnerWhere
127
131
128
132
// DEMANGLE-TYPE: $s13nominal_types12GenericOuterO5InnerVySiSS_GD
129
133
// DEMANGLE-TYPE: $s13nominal_types12GenericOuterO0C5InnerVySiSS_SfSdGD
134
+ // DEMANGLE-TYPE: $s13nominal_types12GenericOuterO10InnerWhereVyACyS2bGSb_GD
130
135
// CHECK-TYPE: GenericOuter<Int, String>.Inner
131
136
// CHECK-TYPE: GenericOuter<Int, String>.GenericInner<Float, Double>
137
+ // CHECK-TYPE: GenericOuter<GenericOuter<Bool, Bool>, Bool>.InnerWhere
132
138
133
139
// DEMANGLE-TYPE: $s13nominal_types12GenericOuterOyxq_GD
134
140
// DEMANGLE-TYPE: $s13nominal_types12GenericOuterOySiSSGD
@@ -153,6 +159,8 @@ extension STSContainer℠ where T == STSOuter {
153
159
154
160
// DEMANGLE-TYPE: $s13nominal_types12STSContainerO8SubclassC11ExtraNestedCyAA8STSOuterV_Si_G
155
161
// CHECK-TYPE: STSContainer<STSOuter>.Subclass<Int>.ExtraNested
162
+ // DEMANGLE-TYPE: $s13nominal_types12STSContainerO8SubclassC16ExtraNestedWhereCyAA8STSOuterV_AEyAI_AIG_G
163
+ // CHECK-TYPE: STSContainer<STSOuter>.Subclass<STSContainer<STSOuter>.Subclass<STSOuter>>.ExtraNestedWhere
156
164
// DEMANGLE-TYPE: $s13nominal_types0017STSContainer_swCgOA2A8STSOuterVRszrlE8SubclassC11ExtraNestedCyAE_Si_G
157
165
// CHECK-TYPE: STSContainer℠<STSOuter>.Subclass<Int>.ExtraNested
158
166
@@ -177,6 +185,7 @@ extension STSContainer℠ where T == STSOuter {
177
185
// DEMANGLE-DECL: $s13nominal_types12GenericOuterO
178
186
// DEMANGLE-DECL: $s13nominal_types12GenericOuterO5InnerV
179
187
// DEMANGLE-DECL: $s13nominal_types12GenericOuterO0C5InnerV
188
+ // DEMANGLE-DECL: $s13nominal_types12GenericOuterO10InnerWhereV
180
189
// DEMANGLE-DECL: $s13nominal_types1PP
181
190
// DEMANGLE-DECL: $s13nominal_types11ConstrainedV
182
191
@@ -186,5 +195,6 @@ extension STSContainer℠ where T == STSOuter {
186
195
// CHECK-DECL: nominal_types.(file).GenericOuter
187
196
// CHECK-DECL: nominal_types.(file).GenericOuter.Inner
188
197
// CHECK-DECL: nominal_types.(file).GenericOuter.GenericInner
198
+ // CHECK-DECL: nominal_types.(file).GenericOuter.InnerWhere
189
199
// CHECK-DECL: nominal_types.(file).P
190
200
// CHECK-DECL: nominal_types.(file).Constrained
0 commit comments