// RUN: %target-typecheck-verify-swift -swift-version 3 protocol P { associatedtype A associatedtype B func f(_: 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) -> ()'; do you want to add a stub?}} } extension P { func f(_: T) where T.A == Self.A, T.A == Self.B { } // expected-note{{candidate has non-matching type ' (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 }