// RUN: %target-typecheck-verify-swift // 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 // A more complicated example. protocol Equatable {} struct Array {} extension Array : Equatable where Element : Equatable {} protocol Sequence { associatedtype Element } extension Array : Sequence {} struct EquatableSequenceBox where T.Element : Equatable { // CHECK-LABEL: EquatableSequenceBox.withArrayArray@ // CHECK-NEXT: Generic signature: >, U : Equatable> func withArrayArray(_: U) where T == Array> {} } // Make sure requirement desugaring handles conditional conformances. protocol Hashable : Equatable {} struct Set {} extension Array : Hashable where Element : Hashable {} // CHECK-LABEL: doStuff@ // CHECK-NEXT: Generic signature: func doStuff(_: Set>) {}