// RUN: %target-swift-frontend -typecheck -debug-generic-signatures %s 2>&1 | %FileCheck %s // RUN: %target-swift-frontend -typecheck -debug-generic-signatures %s -disable-requirement-machine-concrete-contraction 2>&1 | %FileCheck %s protocol P : C {} class C : P {} // CHECK-LABEL: .SubP@ // CHECK-NEXT: Requirement signature: protocol SubP : P {} protocol Q { associatedtype T } // CHECK-LABEL: .foo1@ // CHECK-NEXT: Generic signature: func foo1(_: T) {} // CHECK-LABEL: .foo1a@ // CHECK-NEXT: Generic signature: func foo1a(_: T) where T : P, T : C {} // CHECK-LABEL: .foo1b@ // CHECK-NEXT: Generic signature: func foo1b(_: T) where T : C, T : P {} // CHECK-LABEL: .foo2@ // CHECK-NEXT: Generic signature: func foo2(_: T) where T.T : P {} // CHECK-LABEL: .foo3@ // CHECK-NEXT: Generic signature: func foo3(_: T) {} // CHECK-LABEL: .foo4@ // CHECK-NEXT: Generic signature: func foo4(_: T) where T.T : SubP {} protocol SuperP {} // CHECK-LABEL: .SubSuperP@ // CHECK-NEXT: Requirement signature: protocol SubSuperP : SuperP, SuperC {} class SuperC : SubSuperP {} // CHECK-LABEL: .foo5@ // CHECK-NEXT: Generic signature: func foo5(_: T) {} // CHECK-LABEL: .foo6@ // CHECK-NEXT: Generic signature: func foo6(_: T) where T.T : SubSuperP {} protocol POther where Self : COther {} class COther : POther {} // CHECK-LABEL: .foo7@ // CHECK-NEXT: Generic signature: func foo7(_: T) where T : COther, T : POther {}