mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
63 lines
1.7 KiB
Swift
63 lines
1.7 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: split-file %s %t
|
|
|
|
// RUN: %target-swift-emit-ir -target %target-future-triple -min-runtime-version 6.0 %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s
|
|
// RUN: %target-swift-emit-ir -target %target-triple -min-runtime-version 5.9 %t/test.swift -I %t/Inputs -enable-experimental-cxx-interop | %FileCheck %s --check-prefix=GXX
|
|
|
|
// REQUIRES: objc_interop
|
|
// UNSUPPORTED: OS=windows-msvc
|
|
|
|
//--- Inputs/module.modulemap
|
|
module ObjCXXModule {
|
|
header "objCXXHeader.h"
|
|
}
|
|
|
|
//--- Inputs/objCXXHeader.h
|
|
|
|
@interface ObjCInterface
|
|
|
|
- (void)method;
|
|
|
|
@end
|
|
|
|
ObjCInterface * _Nonnull retObjCInterface() noexcept;
|
|
|
|
//--- test.swift
|
|
|
|
import ObjCXXModule
|
|
|
|
func testObjCMethodCall() {
|
|
let obj = retObjCInterface();
|
|
obj.method();
|
|
}
|
|
|
|
testObjCMethodCall()
|
|
|
|
// CHECK: define {{.*}} @"$s4test0A14ObjCMethodCallyyF"() #[[#UWATTR:]] personality ptr @_swift_exceptionPersonality
|
|
// CHECK: invoke void {{.*}}@objc_msgSend
|
|
// CHECK-NEXT: to label %[[CONT1:.*]] unwind label %[[UNWIND1:.*]]
|
|
// CHECK-EMPTY:
|
|
// CHECK-NEXT: [[CONT1]]:
|
|
// CHECK: ret
|
|
// CHECK-EMPTY:
|
|
// CHECK-NEXT: [[UNWIND1]]:
|
|
// CHECK-NEXT: landingpad { ptr, i32 }
|
|
// CHECK-NEXT: catch ptr null
|
|
// CHECK-NEXT: call void @llvm.trap()
|
|
// CHECK-NEXT: unreachable
|
|
// CHECK-NEXT: }
|
|
|
|
// GXX: define {{.*}} @"$s4test0A14ObjCMethodCallyyF"() #[[#UWATTR:]] personality ptr @__gxx_personality_v0
|
|
// GXX: invoke void {{.*}}@objc_msgSend
|
|
// GXX-NEXT: to label %[[CONT1:.*]] unwind label %[[UNWIND1:.*]]
|
|
// GXX-EMPTY:
|
|
// GXX-NEXT: [[CONT1]]:
|
|
// GXX: ret
|
|
// GXX-EMPTY:
|
|
// GXX-NEXT: [[UNWIND1]]:
|
|
// GXX-NEXT: landingpad { ptr, i32 }
|
|
// GXX-NEXT: catch ptr null
|
|
// GXX-NEXT: call void @llvm.trap()
|
|
// GXX-NEXT: unreachable
|
|
// GXX-NEXT: }
|