blob: 7620c64aded39547f339e9bf2a3a0ade49103be7 [file] [log] [blame]
// RUN: %target-swift-emit-silgen %s | %FileCheck %s
protocol Saturable: Comparable {
func saturated(max: Self) -> Self
}
extension Int: Saturable {
func saturated(max: Int) -> Int {
return self > max ? max : self
}
}
// CHECK-NOT: sil_witness_table Int: Equatable module witnesses_refinement {
// CHECK-NOT: sil_witness_table Int: Comparable module witnesses_refinement {
// CHECK: sil_witness_table hidden Int: Saturable module witnesses_refinement {
protocol P { }
protocol P0 {
associatedtype A
}
protocol P1 {
associatedtype A
}
protocol P2: P0 {
associatedtype A
}
protocol P3: P2, P1 {
associatedtype A: P
}
struct ConformsToP: P { }
// CHECK-LABEL: sil_witness_table hidden ConformsToP3: P3
// CHECK: base_protocol P1
// CHECK-NEXT: base_protocol P2
// CHECK-NEXT: associated_type_protocol (A: P)
// CHECK-NEXT: }
struct ConformsToP3: P3 {
typealias A = ConformsToP
}
// CHECK-LABEL: sil_witness_table hidden ConformsToP3: P2
// CHECK: base_protocol P0
// CHECK-NEXT: }
// CHECK-LABEL: sil_witness_table hidden ConformsToP3: P1
// CHECK: associated_type A: ConformsToP
// CHECK-NEXT: }
// CHECK-LABEL: sil_witness_table hidden ConformsToP3: P0
// CHECK: associated_type A: ConformsToP
// CHECK-NEXT: }