blob: 3ad499512406c8e9655bbedb565f0684ac26ed48 [file] [log] [blame]
// RUN: %target-typecheck-verify-swift -swift-version 3
protocol P {
associatedtype A
associatedtype B
func f<T: P>(_: T) where T.A == Self.A, T.A == Self.B // expected-warning{{adding constraint 'Self.A == Self.B' on 'Self' via instance method requirement 'f' is deprecated}}
// expected-note@-1{{protocol requires function 'f' with type '<T> (T) -> ()'; do you want to add a stub?}}
}
extension P {
func f<T: P>(_: T) where T.A == Self.A, T.A == Self.B { } // expected-note{{candidate has non-matching type '<Self, T> (T) -> ()'}}
}
struct X : P { // expected-error{{type 'X' does not conform to protocol 'P'}}
typealias A = X
typealias B = Int
}
struct Y : P {
typealias A = Y
typealias B = Y
}