blob: b6aae4cc7aeb98530427bfcf246ac3b5785ae984 [file] [log] [blame]
// RUN: rm -rf %t && mkdir -p %t
// RUN: %build-irgen-test-overlays
// RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
// REQUIRES: objc_interop
import gizmo
sil @use_metatype : $@convention(thin) <T> (@thin T.Type) -> ()
// CHECK-LABEL: define swiftcc void @test(%TSo9InnerTypeC* swiftself, %swift.type* %Self, i8** %SelfWitnessTable)
// CHECK: [[TMP:%.*]] = call %swift.type* @_T0So9OuterTypeCMa()
// CHECK: call swiftcc void @use_metatype(%swift.type* [[TMP]])
// CHECK: ret void
sil @test : $@convention(witness_method: NSRuncing) (@guaranteed OuterType.InnerType) -> () {
bb0(%0 : $OuterType.InnerType):
%1 = function_ref @use_metatype : $@convention(thin) _0_0> (@thin τ_0_0.Type) -> ()
%2 = metatype $@thin OuterType.Type
%3 = apply %1<OuterType>(%2) : $@convention(thin) _0_0> (@thin τ_0_0.Type) -> ()
return %3 : $()
}
// CHECK-LABEL: define {{.*}}%swift.type* @_T0So9OuterTypeCMa()
// CHECK: [[TMP:%.*]] = call %objc_class* @swift_rt_swift_getInitializedObjCClass(
// CHECK: call %swift.type* @swift_getObjCClassMetadata(%objc_class* [[TMP]])
// CHECK: ret