blob: d530815c361f601981b2c27425944fc0f9c2344b [file] [log] [blame]
// RUN: %target-swift-frontend -disable-availability-checking -emit-ir %s | %FileCheck %s
protocol Butt { }
protocol Tubb: Butt { }
protocol P {
associatedtype A: Butt
associatedtype B: Butt
func foo(_ x: A) -> B
}
struct Foo<T: Tubb>: P {
func foo(_ x: T) -> some Tubb { return x }
}
// CHECK-LABEL: define {{.*}} @"$s030opaque_result_type_associated_C17_conformance_path3FooVyxGAA1PAA1B_AA4ButtPWT"
// CHECK: [[TUBB_CONFORMANCE:%.*]] = call swiftcc i8** @swift_getOpaqueTypeConformance({{.*}}, i{{.*}} 1)
// CHECK: [[BUTT_CONFORMANCE_ADDR:%.*]] = getelementptr {{.*}} [[TUBB_CONFORMANCE]], i32 1
// CHECK: [[BUTT_CONFORMANCE_LOAD:%.*]] = load {{.*}} [[BUTT_CONFORMANCE_ADDR]]
// CHECK: [[BUTT_CONFORMANCE:%.*]] = bitcast {{.*}} [[BUTT_CONFORMANCE_LOAD]]
// CHECK: ret {{.*}} [[BUTT_CONFORMANCE]]