@@ -95,11 +95,10 @@ func fail4<T: Barrable>(_ t: T) -> (Y, Z)
95
95
return ( t. bar, t. bar. foo) // expected-error{{cannot convert return expression of type 'X' to return type 'Z'}}
96
96
}
97
97
98
- // TODO: repeat diagnostic
99
98
func fail5< T: Barrable > ( _ t: T ) -> ( Y , Z )
100
99
where
101
100
T. Bar. Foo == Z ,
102
- T. Bar == Y { // expected-error 2 {{generic parameter 'T.Bar.Foo' cannot be equal to both 'Z' and 'X'}}
101
+ T. Bar == Y { // expected-error{{generic parameter 'T.Bar.Foo' cannot be equal to both 'Z' and 'X'}}
103
102
return ( t. bar, t. bar. foo) // expected-error{{cannot convert return expression of type 'X' to return type 'Z'}}
104
103
}
105
104
@@ -110,7 +109,7 @@ func testAssocTypeEquivalence<T: Fooable>(_ fooable: T) -> X.Type
110
109
return T . Foo. self
111
110
}
112
111
113
- func fail6< T> ( _ t: T ) -> Int where T == Int { // expected-error 2 {{same-type requirement makes generic parameter 'T' non-generic}}
112
+ func fail6< T> ( _ t: T ) -> Int where T == Int { // expected-error{{same-type requirement makes generic parameter 'T' non-generic}}
114
113
return t
115
114
}
116
115
@@ -161,7 +160,7 @@ struct S1<T : P> {
161
160
S1 < Q > ( ) . foo ( x: 1 , y: 2 )
162
161
163
162
struct S2 < T : P > where T. A == T . B {
164
- func foo< X, Y> ( x: X , y: Y ) where X == T . A , Y == T . B { // expected-error 2 {{same-type requirement makes generic parameters 'X' and 'Y' equivalent}}
163
+ func foo< X, Y> ( x: X , y: Y ) where X == T . A , Y == T . B { // expected-error{{same-type requirement makes generic parameters 'X' and 'Y' equivalent}}
165
164
print ( X . self)
166
165
print ( Y . self)
167
166
print ( x)
@@ -171,7 +170,7 @@ struct S2<T : P> where T.A == T.B {
171
170
S2 < Q > ( ) . foo ( x: 1 , y: 2 )
172
171
173
172
struct S3 < T : P > {
174
- func foo< X, Y> ( x: X , y: Y ) where X == T . A , Y == T . A { } // expected-error 2 {{same-type requirement makes generic parameters 'X' and 'Y' equivalent}}
173
+ func foo< X, Y> ( x: X , y: Y ) where X == T . A , Y == T . A { } // expected-error{{same-type requirement makes generic parameters 'X' and 'Y' equivalent}}
175
174
}
176
175
S3 < Q > ( ) . foo ( x: 1 , y: 2 )
177
176
@@ -211,33 +210,27 @@ protocol P1 {
211
210
func structuralSameType1< A: P1 , B: P1 , T, U, V, W> ( _: A , _: B , _: T , _: U , _: V , _: W )
212
211
where A. Assoc == X1 < T , U > , B. Assoc == X1 < V , W > , A. Assoc == B . Assoc { }
213
212
// expected-error@-1{{same-type requirement makes generic parameters 'T' and 'V' equivalent}}
214
- // expected-error@-2{{same-type requirement makes generic parameters 'T' and 'V' equivalent}}
215
- // expected-error@-3{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
216
- // expected-error@-4{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
213
+ // expected-error@-2{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
217
214
218
215
typealias Tuple2 < T, U> = ( T , U )
219
216
220
217
func structuralSameType2< A: P1 , B: P1 , T, U, V, W> ( _: A , _: B , _: T , _: U , _: V , _: W )
221
218
where A. Assoc == Tuple2 < T , U > , B. Assoc == Tuple2 < V , W > , A. Assoc == B . Assoc { }
222
219
// expected-error@-1{{same-type requirement makes generic parameters 'T' and 'V' equivalent}}
223
- // expected-error@-2{{same-type requirement makes generic parameters 'T' and 'V' equivalent}}
224
- // expected-error@-3{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
225
- // expected-error@-4{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
220
+ // expected-error@-2{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
226
221
227
222
func structuralSameType3< T, U, V, W> ( _: T , _: U , _: V , _: W )
228
223
where X1 < T , U > == X1 < V , W > { }
229
224
// expected-error@-1{{same-type requirement makes generic parameters 'T' and 'V' equivalent}}
230
- // expected-error@-2{{same-type requirement makes generic parameters 'T' and 'V' equivalent}}
231
- // expected-error@-3{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
232
- // expected-error@-4{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
225
+ // expected-error@-2{{same-type requirement makes generic parameters 'U' and 'W' equivalent}}
233
226
234
227
protocol P2 {
235
228
associatedtype Assoc1
236
229
associatedtype Assoc2
237
230
}
238
231
239
232
func structuralSameTypeRecursive1< T: P2 , U> ( _: T , _: U )
240
- where T. Assoc1 == Tuple2 < T . Assoc1 , U > // expected-error 2 {{same-type constraint 'T.Assoc1' == '(T.Assoc1, U)' is recursive}}
233
+ where T. Assoc1 == Tuple2 < T . Assoc1 , U > // expected-error{{same-type constraint 'T.Assoc1' == '(T.Assoc1, U)' is recursive}}
241
234
{ }
242
235
243
236
0 commit comments