// RUN: %target-typecheck-verify-swift -warn-redundant-requirements // RUN: %target-swift-frontend -debug-generic-signatures -typecheck %s 2>&1 | %FileCheck %s // https://github.com/apple/swift/issues/56862 // CHECK-LABEL: Requirement signature: public protocol Adjoint { associatedtype Dual: Adjoint where Self.Dual.Dual == Self } // CHECK-LABEL: Requirement signature: public protocol Diffable { associatedtype Patch } // CHECK-LABEL: Requirement signature: public protocol AdjointDiffable: Adjoint & Diffable where Self.Patch: Adjoint, Self.Dual: AdjointDiffable, Self.Patch.Dual == Self.Dual.Patch { } // This is another example used to hit the same problem. Any one of the three // conformance requirements 'A : P', 'B : P' or 'C : P' can be dropped and // proven from the other two, but dropping two or more conformance requirements // leaves us with an invalid signature. // CHECK-LABEL: Requirement signature: protocol P { associatedtype A : P where A == B.C associatedtype B : P where B == A.C associatedtype C : P where C == A.B // expected-warning@-1 {{redundant conformance constraint 'Self.C' : 'P'}} }