@@ -23,164 +23,164 @@ class Base: Q, A {
23
23
24
24
// CHECK-LABEL: interface_type_mangling.f1
25
25
// CHECK: [[F_SIGNATURE:<A where A: interface_type_mangling.PP, A: interface_type_mangling.PQ>\(A\) -> \(\)]]
26
- func f1< T where T: PP , T: PQ > ( _ x : T ) { }
26
+ func f1< T> ( _ x : T ) where T: PP , T: PQ { }
27
27
// CHECK: interface_type_mangling.f2[[F_SIGNATURE]]
28
- func f2< T where T: PQ , T: PP > ( _ x : T ) { }
28
+ func f2< T> ( _ x : T ) where T: PQ , T: PP { }
29
29
// CHECK: interface_type_mangling.f3[[F_SIGNATURE]]
30
- func f3< T where T: PQ , T: PP , T: P > ( _ x : T ) { }
30
+ func f3< T> ( _ x : T ) where T: PQ , T: PP , T: P { }
31
31
32
32
// CHECK-LABEL: interface_type_mangling.g1
33
33
// CHECK: [[G_SIGNATURE:<A, B where A: interface_type_mangling.PP, B: interface_type_mangling.PQ>\(_: B, y: A\) -> \(\)]]
34
- func g1< U, T where T : PQ , U : PP > ( _ x: T , y: U ) { }
34
+ func g1< U, T> ( _ x: T , y: U ) where T : PQ , U : PP { }
35
35
// CHECK: interface_type_mangling.g2[[G_SIGNATURE]]
36
- func g2< U, T where T: PQ , T. Assoc1: A , U: PP > ( _ x : T , y : U ) { }
36
+ func g2< U, T> ( _ x : T , y : U ) where T: PQ , T. Assoc1: A , U: PP { }
37
37
// CHECK: interface_type_mangling.g3[[G_SIGNATURE]]
38
- func g3< U, T where U: PP , T: PQ , T. Assoc1: A > ( _ x : T , y : U ) { }
38
+ func g3< U, T> ( _ x : T , y : U ) where U: PP , T: PQ , T. Assoc1: A { }
39
39
40
40
// CHECK-LABEL: interface_type_mangling.h1
41
41
// CHECK: [[H_SIGNATURE:<A where A: interface_type_mangling.Base, A: interface_type_mangling.P>\(A\) -> \(\)]]
42
- func h1< T where T: Base , T: P > ( _ x : T ) { }
42
+ func h1< T> ( _ x : T ) where T: Base , T: P { }
43
43
// CHECK: interface_type_mangling.h2[[H_SIGNATURE]]
44
- func h2< T where T: P , T: Base > ( _ x : T ) { }
44
+ func h2< T> ( _ x : T ) where T: P , T: Base { }
45
45
// CHECK: interface_type_mangling.h3[[H_SIGNATURE]]
46
- func h3< T where T: P , T: Base , T: AnyObject > ( _ x : T ) { }
46
+ func h3< T> ( _ x : T ) where T: P , T: Base , T: AnyObject { }
47
47
// CHECK: interface_type_mangling.h4[[H_SIGNATURE]]
48
- func h4< T where T: P , T: Base , T: Q > ( _ x : T ) { }
48
+ func h4< T> ( _ x : T ) where T: P , T: Base , T: Q { }
49
49
// CHECK: interface_type_mangling.h5[[H_SIGNATURE]]
50
- func h5< T where T: P , T: Base , T: Q /* TODO: same type constraints , T.Assoc0 == Base*/> ( _ x : T ) { }
50
+ func h5< T> ( _ x : T ) where T: P , T: Base , T: Q /* TODO: same type constraints , T.Assoc0 == Base*/ { }
51
51
52
52
// CHECK-LABEL: interface_type_mangling.i1
53
53
// CHECK: [[I_SIGNATURE:<A where A: interface_type_mangling.P, A: interface_type_mangling.Q, A.Assoc0: interface_type_mangling.Q, A.Assoc1: interface_type_mangling.P>\(A\) -> \(\)]]
54
- func i1< T where T: P , T: Q , T. Assoc1: P , T. Assoc0: Q > ( _ x : T ) { }
54
+ func i1< T> ( _ x : T ) where T: P , T: Q , T. Assoc1: P , T. Assoc0: Q { }
55
55
// CHECK: interface_type_mangling.i2[[I_SIGNATURE]]
56
- func i2< T where T: P , T: Q , T. Assoc0: Q , T. Assoc1: P > ( _ x : T ) { }
56
+ func i2< T> ( _ x : T ) where T: P , T: Q , T. Assoc0: Q , T. Assoc1: P { }
57
57
58
58
// CHECK-LABEL: interface_type_mangling.j01
59
59
// CHECK: [[J_SIGNATURE:<A where A: interface_type_mangling.P, A: interface_type_mangling.Q, A.Assoc0 == A.Assoc1, A.Assoc1 == A.Assoc2>\(A\) -> \(\)]]
60
- func j01< T where T: P , T: Q , T. Assoc0 == T . Assoc1 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
60
+ func j01< T> ( _ x : T ) where T: P , T: Q , T. Assoc0 == T . Assoc1 , T. Assoc1 == T . Assoc2 { }
61
61
// CHECK: interface_type_mangling.j02[[J_SIGNATURE]]
62
- func j02< T where T: P , T: Q , T. Assoc0 == T . Assoc2 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
62
+ func j02< T> ( _ x : T ) where T: P , T: Q , T. Assoc0 == T . Assoc2 , T. Assoc1 == T . Assoc2 { }
63
63
// CHECK: interface_type_mangling.j03[[J_SIGNATURE]]
64
- func j03< T where T: P , T: Q , T. Assoc0 == T . Assoc2 , T. Assoc1 == T . Assoc0 > ( _ x : T ) { }
64
+ func j03< T> ( _ x : T ) where T: P , T: Q , T. Assoc0 == T . Assoc2 , T. Assoc1 == T . Assoc0 { }
65
65
// CHECK: interface_type_mangling.j04[[J_SIGNATURE]]
66
- func j04< T where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
66
+ func j04< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc1 == T . Assoc2 { }
67
67
// CHECK: interface_type_mangling.j05[[J_SIGNATURE]]
68
- func j05< T where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
68
+ func j05< T> ( _ x : T ) where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc1 == T . Assoc2 { }
69
69
// CHECK: interface_type_mangling.j06[[J_SIGNATURE]]
70
- func j06< T where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc1 == T . Assoc0 > ( _ x : T ) { }
70
+ func j06< T> ( _ x : T ) where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc1 == T . Assoc0 { }
71
71
// CHECK: interface_type_mangling.j07[[J_SIGNATURE]]
72
- func j07< T where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc2 == T . Assoc1 > ( _ x : T ) { }
72
+ func j07< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc2 == T . Assoc1 { }
73
73
// CHECK: interface_type_mangling.j08[[J_SIGNATURE]]
74
- func j08< T where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc2 == T . Assoc1 > ( _ x : T ) { }
74
+ func j08< T> ( _ x : T ) where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc2 == T . Assoc1 { }
75
75
// CHECK: interface_type_mangling.j09[[J_SIGNATURE]]
76
- func j09< T where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc0 == T . Assoc1 > ( _ x : T ) { }
76
+ func j09< T> ( _ x : T ) where T: P , T: Q , T. Assoc2 == T . Assoc0 , T. Assoc0 == T . Assoc1 { }
77
77
// CHECK: interface_type_mangling.j10[[J_SIGNATURE]]
78
- func j10< T where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc0 == T . Assoc1 > ( _ x : T ) { }
78
+ func j10< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc0 == T . Assoc1 { }
79
79
// CHECK: interface_type_mangling.j11[[J_SIGNATURE]]
80
- func j11< T where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc0 == T . Assoc2 > ( _ x : T ) { }
80
+ func j11< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc0 == T . Assoc2 { }
81
81
// CHECK: interface_type_mangling.j12[[J_SIGNATURE]]
82
- func j12< T where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc0 == T . Assoc2 > ( _ x : T ) { }
82
+ func j12< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc0 == T . Assoc2 { }
83
83
// CHECK: interface_type_mangling.j13[[J_SIGNATURE]]
84
- func j13< T where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc1 == T . Assoc0 > ( _ x : T ) { }
84
+ func j13< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc1 == T . Assoc0 { }
85
85
// CHECK: interface_type_mangling.j14[[J_SIGNATURE]]
86
- func j14< T where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc2 == T . Assoc0 > ( _ x : T ) { }
86
+ func j14< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc2 , T. Assoc2 == T . Assoc0 { }
87
87
// CHECK: interface_type_mangling.j15[[J_SIGNATURE]]
88
- func j15< T where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc2 == T . Assoc0 > ( _ x : T ) { }
88
+ func j15< T> ( _ x : T ) where T: P , T: Q , T. Assoc1 == T . Assoc0 , T. Assoc2 == T . Assoc0 { }
89
89
// CHECK: interface_type_mangling.j16[[J_SIGNATURE]]
90
- func j16< T where T: P , T: Q , T. Assoc2 == T . Assoc1 , T. Assoc1 == T . Assoc0 > ( _ x : T ) { }
90
+ func j16< T> ( _ x : T ) where T: P , T: Q , T. Assoc2 == T . Assoc1 , T. Assoc1 == T . Assoc0 { }
91
91
// CHECK: interface_type_mangling.j17[[J_SIGNATURE]]
92
- func j17< T where T: P , T: Q , T. Assoc2 == T . Assoc1 , T. Assoc2 == T . Assoc0 > ( _ x : T ) { }
92
+ func j17< T> ( _ x : T ) where T: P , T: Q , T. Assoc2 == T . Assoc1 , T. Assoc2 == T . Assoc0 { }
93
93
// CHECK: interface_type_mangling.j18[[J_SIGNATURE]]
94
- func j18< T where T: P , T: Q , T. Assoc0 == T . Assoc1 , T. Assoc2 == T . Assoc0 > ( _ x : T ) { }
94
+ func j18< T> ( _ x : T ) where T: P , T: Q , T. Assoc0 == T . Assoc1 , T. Assoc2 == T . Assoc0 { }
95
95
96
96
struct S { }
97
97
struct G < X> { }
98
98
99
99
// CHECK-LABEL: interface_type_mangling.k01
100
100
// CHECK: [[K_SIGNATURE:<A where A: interface_type_mangling.P, A.Assoc1 == interface_type_mangling.S, A.Assoc2 == interface_type_mangling.S>\(A\) -> \(\)]]
101
- func k01< T where T: P , S == T . Assoc1 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
101
+ func k01< T> ( _ x : T ) where T: P , S == T . Assoc1 , T. Assoc1 == T . Assoc2 { }
102
102
// CHECK: interface_type_mangling.k02[[K_SIGNATURE]]
103
- func k02< T where T: P , S == T . Assoc2 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
103
+ func k02< T> ( _ x : T ) where T: P , S == T . Assoc2 , T. Assoc1 == T . Assoc2 { }
104
104
// CHECK: interface_type_mangling.k03[[K_SIGNATURE]]
105
- func k03< T where T: P , S == T . Assoc2 , T. Assoc1 == S > ( _ x : T ) { }
105
+ func k03< T> ( _ x : T ) where T: P , S == T . Assoc2 , T. Assoc1 == S { }
106
106
// CHECK: interface_type_mangling.k04[[K_SIGNATURE]]
107
- func k04< T where T: P , T. Assoc1 == S , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
107
+ func k04< T> ( _ x : T ) where T: P , T. Assoc1 == S , T. Assoc1 == T . Assoc2 { }
108
108
// CHECK: interface_type_mangling.k05[[K_SIGNATURE]]
109
- func k05< T where T: P , T. Assoc2 == S , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
109
+ func k05< T> ( _ x : T ) where T: P , T. Assoc2 == S , T. Assoc1 == T . Assoc2 { }
110
110
// CHECK: interface_type_mangling.k06[[K_SIGNATURE]]
111
- func k06< T where T: P , T. Assoc2 == S , T. Assoc1 == S > ( _ x : T ) { }
111
+ func k06< T> ( _ x : T ) where T: P , T. Assoc2 == S , T. Assoc1 == S { }
112
112
// CHECK: interface_type_mangling.k07[[K_SIGNATURE]]
113
- func k07< T where T: P , T. Assoc1 == S , T. Assoc2 == T . Assoc1 > ( _ x : T ) { }
113
+ func k07< T> ( _ x : T ) where T: P , T. Assoc1 == S , T. Assoc2 == T . Assoc1 { }
114
114
// CHECK: interface_type_mangling.k08[[K_SIGNATURE]]
115
- func k08< T where T: P , T. Assoc2 == S , T. Assoc2 == T . Assoc1 > ( _ x : T ) { }
115
+ func k08< T> ( _ x : T ) where T: P , T. Assoc2 == S , T. Assoc2 == T . Assoc1 { }
116
116
// CHECK: interface_type_mangling.k09[[K_SIGNATURE]]
117
- func k09< T where T: P , T. Assoc2 == S , S == T . Assoc1 > ( _ x : T ) { }
117
+ func k09< T> ( _ x : T ) where T: P , T. Assoc2 == S , S == T . Assoc1 { }
118
118
// CHECK: interface_type_mangling.k10[[K_SIGNATURE]]
119
- func k10< T where T: P , T. Assoc1 == T . Assoc2 , S == T . Assoc1 > ( _ x : T ) { }
119
+ func k10< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , S == T . Assoc1 { }
120
120
// CHECK: interface_type_mangling.k11[[K_SIGNATURE]]
121
- func k11< T where T: P , T. Assoc1 == T . Assoc2 , S == T . Assoc2 > ( _ x : T ) { }
121
+ func k11< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , S == T . Assoc2 { }
122
122
// CHECK: interface_type_mangling.k12[[K_SIGNATURE]]
123
- func k12< T where T: P , T. Assoc1 == S , S == T . Assoc2 > ( _ x : T ) { }
123
+ func k12< T> ( _ x : T ) where T: P , T. Assoc1 == S , S == T . Assoc2 { }
124
124
// CHECK: interface_type_mangling.k13[[K_SIGNATURE]]
125
- func k13< T where T: P , T. Assoc1 == T . Assoc2 , T. Assoc1 == S > ( _ x : T ) { }
125
+ func k13< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , T. Assoc1 == S { }
126
126
// CHECK: interface_type_mangling.k14[[K_SIGNATURE]]
127
- func k14< T where T: P , T. Assoc1 == T . Assoc2 , T. Assoc2 == S > ( _ x : T ) { }
127
+ func k14< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , T. Assoc2 == S { }
128
128
// CHECK: interface_type_mangling.k15[[K_SIGNATURE]]
129
- func k15< T where T: P , T. Assoc1 == S , T. Assoc2 == S > ( _ x : T ) { }
129
+ func k15< T> ( _ x : T ) where T: P , T. Assoc1 == S , T. Assoc2 == S { }
130
130
// CHECK: interface_type_mangling.k16[[K_SIGNATURE]]
131
- func k16< T where T: P , T. Assoc2 == T . Assoc1 , T. Assoc1 == S > ( _ x : T ) { }
131
+ func k16< T> ( _ x : T ) where T: P , T. Assoc2 == T . Assoc1 , T. Assoc1 == S { }
132
132
// CHECK: interface_type_mangling.k17[[K_SIGNATURE]]
133
- func k17< T where T: P , T. Assoc2 == T . Assoc1 , T. Assoc2 == S > ( _ x : T ) { }
133
+ func k17< T> ( _ x : T ) where T: P , T. Assoc2 == T . Assoc1 , T. Assoc2 == S { }
134
134
// CHECK: interface_type_mangling.k18[[K_SIGNATURE]]
135
- func k18< T where T: P , S == T . Assoc1 , T. Assoc2 == S > ( _ x : T ) { }
135
+ func k18< T> ( _ x : T ) where T: P , S == T . Assoc1 , T. Assoc2 == S { }
136
136
137
137
// CHECK-LABEL: interface_type_mangling.L01
138
138
// CHECK: [[L_SIGNATURE:<A where A: interface_type_mangling.P, A.Assoc1 == interface_type_mangling.G<A>, A.Assoc2 == interface_type_mangling.G<A>>\(A\) -> \(\)]]
139
- func L01< T where T: P , G < T > == T . Assoc1 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
139
+ func L01< T> ( _ x : T ) where T: P , G < T > == T . Assoc1 , T. Assoc1 == T . Assoc2 { }
140
140
// CHECK: interface_type_mangling.L02[[L_SIGNATURE]]
141
- func L02< T where T: P , G < T > == T . Assoc2 , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
141
+ func L02< T> ( _ x : T ) where T: P , G < T > == T . Assoc2 , T. Assoc1 == T . Assoc2 { }
142
142
// CHECK: interface_type_mangling.L03[[L_SIGNATURE]]
143
- func L03< T where T: P , G < T > == T . Assoc2 , T. Assoc1 == G < T > > ( _ x : T ) { }
143
+ func L03< T> ( _ x : T ) where T: P , G < T > == T . Assoc2 , T. Assoc1 == G < T > { }
144
144
// CHECK: interface_type_mangling.L04[[L_SIGNATURE]]
145
- func L04< T where T: P , T. Assoc1 == G < T > , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
145
+ func L04< T> ( _ x : T ) where T: P , T. Assoc1 == G < T > , T. Assoc1 == T . Assoc2 { }
146
146
// CHECK: interface_type_mangling.L05[[L_SIGNATURE]]
147
- func L05< T where T: P , T. Assoc2 == G < T > , T. Assoc1 == T . Assoc2 > ( _ x : T ) { }
147
+ func L05< T> ( _ x : T ) where T: P , T. Assoc2 == G < T > , T. Assoc1 == T . Assoc2 { }
148
148
// CHECK: interface_type_mangling.L06[[L_SIGNATURE]]
149
- func L06< T where T: P , T. Assoc2 == G < T > , T. Assoc1 == G < T > > ( _ x : T ) { }
149
+ func L06< T> ( _ x : T ) where T: P , T. Assoc2 == G < T > , T. Assoc1 == G < T > { }
150
150
// CHECK: interface_type_mangling.L07[[L_SIGNATURE]]
151
- func L07< T where T: P , T. Assoc1 == G < T > , T. Assoc2 == T . Assoc1 > ( _ x : T ) { }
151
+ func L07< T> ( _ x : T ) where T: P , T. Assoc1 == G < T > , T. Assoc2 == T . Assoc1 { }
152
152
// CHECK: interface_type_mangling.L08[[L_SIGNATURE]]
153
- func L08< T where T: P , T. Assoc2 == G < T > , T. Assoc2 == T . Assoc1 > ( _ x : T ) { }
153
+ func L08< T> ( _ x : T ) where T: P , T. Assoc2 == G < T > , T. Assoc2 == T . Assoc1 { }
154
154
// CHECK: interface_type_mangling.L09[[L_SIGNATURE]]
155
- func L09< T where T: P , T. Assoc2 == G < T > , G < T > == T . Assoc1 > ( _ x : T ) { }
155
+ func L09< T> ( _ x : T ) where T: P , T. Assoc2 == G < T > , G < T > == T . Assoc1 { }
156
156
// CHECK: interface_type_mangling.L10[[L_SIGNATURE]]
157
- func L10< T where T: P , T. Assoc1 == T . Assoc2 , G < T > == T . Assoc1 > ( _ x : T ) { }
157
+ func L10< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , G < T > == T . Assoc1 { }
158
158
// CHECK: interface_type_mangling.L11[[L_SIGNATURE]]
159
- func L11< T where T: P , T. Assoc1 == T . Assoc2 , G < T > == T . Assoc2 > ( _ x : T ) { }
159
+ func L11< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , G < T > == T . Assoc2 { }
160
160
// CHECK: interface_type_mangling.L12[[L_SIGNATURE]]
161
- func L12< T where T: P , T. Assoc1 == G < T > , G < T > == T . Assoc2 > ( _ x : T ) { }
161
+ func L12< T> ( _ x : T ) where T: P , T. Assoc1 == G < T > , G < T > == T . Assoc2 { }
162
162
// CHECK: interface_type_mangling.L13[[L_SIGNATURE]]
163
- func L13< T where T: P , T. Assoc1 == T . Assoc2 , T. Assoc1 == G < T > > ( _ x : T ) { }
163
+ func L13< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , T. Assoc1 == G < T > { }
164
164
// CHECK: interface_type_mangling.L14[[L_SIGNATURE]]
165
- func L14< T where T: P , T. Assoc1 == T . Assoc2 , T. Assoc2 == G < T > > ( _ x : T ) { }
165
+ func L14< T> ( _ x : T ) where T: P , T. Assoc1 == T . Assoc2 , T. Assoc2 == G < T > { }
166
166
// CHECK: interface_type_mangling.L15[[L_SIGNATURE]]
167
- func L15< T where T: P , T. Assoc1 == G < T > , T. Assoc2 == G < T > > ( _ x : T ) { }
167
+ func L15< T> ( _ x : T ) where T: P , T. Assoc1 == G < T > , T. Assoc2 == G < T > { }
168
168
// CHECK: interface_type_mangling.L16[[L_SIGNATURE]]
169
- func L16< T where T: P , T. Assoc2 == T . Assoc1 , T. Assoc1 == G < T > > ( _ x : T ) { }
169
+ func L16< T> ( _ x : T ) where T: P , T. Assoc2 == T . Assoc1 , T. Assoc1 == G < T > { }
170
170
// CHECK: interface_type_mangling.L17[[L_SIGNATURE]]
171
- func L17< T where T: P , T. Assoc2 == T . Assoc1 , T. Assoc2 == G < T > > ( _ x : T ) { }
171
+ func L17< T> ( _ x : T ) where T: P , T. Assoc2 == T . Assoc1 , T. Assoc2 == G < T > { }
172
172
// CHECK: interface_type_mangling.L18[[L_SIGNATURE]]
173
- func L18< T where T: P , G < T > == T . Assoc1 , T. Assoc2 == G < T > > ( _ x : T ) { }
173
+ func L18< T> ( _ x : T ) where T: P , G < T > == T . Assoc1 , T. Assoc2 == G < T > { }
174
174
175
175
struct X { } ; struct Y { }
176
176
177
177
// CHECK-LABEL: interface_type_mangling.m1
178
178
// CHECK: [[M_SIGNATURE:<A, B where A: interface_type_mangling.A, B: interface_type_mangling.A, A.Assoc == interface_type_mangling.X, B.Assoc == interface_type_mangling.Y>\(_: A, y: B\) -> \(\)]]
179
- func m1< T: A , U: A where T. Assoc == X , U. Assoc == Y > ( _ x : T , y : U ) { }
179
+ func m1< T: A , U: A > ( _ x : T , y : U ) where T. Assoc == X , U. Assoc == Y { }
180
180
// CHECK: interface_type_mangling.m2[[M_SIGNATURE]]
181
- func m2< T: A , U: A where U. Assoc == Y , T. Assoc == X > ( _ x : T , y : U ) { }
181
+ func m2< T: A , U: A > ( _ x : T , y : U ) where U. Assoc == Y , T. Assoc == X { }
182
182
// CHECK: interface_type_mangling.m3[[M_SIGNATURE]]
183
- func m3< T, U where T: A , U: A , U. Assoc == Y , T. Assoc == X > ( _ x : T , y : U ) { }
183
+ func m3< T, U> ( _ x : T , y : U ) where T: A , U: A , U. Assoc == Y , T. Assoc == X { }
184
184
185
185
protocol GenericWitnessTest {
186
186
associatedtype Tee
0 commit comments