// RUN: %target-typecheck-verify-swift // rdar://problem/23149063 protocol P0 { } protocol P { associatedtype A // expected-note{{declared here}} } protocol Q : P { associatedtype A // expected-warning{{redeclaration of associated type 'A' from protocol 'P' is better expressed as a 'where' clause on the protocol}} } func f(t: T) where T : P, T : Q, T.A : P0 { } // expected-note{{'f(t:)' previously declared here}} // expected-warning@-1{{redundant conformance constraint 'T': 'P'}} // expected-note@-2{{conformance constraint 'T': 'P' implied here}} func f(t: T) where T : Q, T : P, T.A : P0 { } // expected-error{{invalid redeclaration of 'f(t:)'}} // expected-warning@-1{{redundant conformance constraint 'T': 'P'}} // expected-note@-2{{conformance constraint 'T': 'P' implied here}}