1
- // RUN: %target-swift-frontend -emit-silgen -I %S/../IDE/Inputs/custom-modules %s 2>&1 | %FileCheck --check-prefix=SIL %s
1
+ // RUN: %target-swift-frontend -emit-silgen -I %S/../IDE/Inputs/custom-modules %s | %FileCheck %s
2
2
// REQUIRES: objc_interop
3
3
import ImportAsMember. A
4
4
import ImportAsMember. Class
5
5
6
6
public func returnGlobalVar( ) -> Double {
7
7
return Struct1 . globalVar
8
8
}
9
- // SIL-LABEL: sil {{.*}}returnGlobalVar{{.*}} () -> Double {
10
- // SIL: %0 = global_addr @IAMStruct1GlobalVar : $*Double
11
- // SIL: [[READ:%.*]] = begin_access [read] [dynamic] %0 : $*Double
12
- // SIL: [[VAL:%.*]] = load [trivial] [[READ]] : $*Double
13
- // SIL: return [[VAL]] : $Double
14
- // SIL-NEXT: }
15
-
16
- // SIL-LABEL: sil {{.*}}anchor{{.*}} () -> () {
17
- func anchor( ) { }
18
-
19
- // SIL-LABEL: sil {{.*}}useClass{{.*}}
20
- // SIL: bb0([[D:%[0-9]+]] : $Double, [[OPTS:%[0-9]+]] : $SomeClass.Options):
9
+ // CHECK-LABEL: sil {{.*}}returnGlobalVar{{.*}} () -> Double {
10
+ // CHECK: %0 = global_addr @IAMStruct1GlobalVar : $*Double
11
+ // CHECK: [[READ:%.*]] = begin_access [read] [dynamic] %0 : $*Double
12
+ // CHECK: [[VAL:%.*]] = load [trivial] [[READ]] : $*Double
13
+ // CHECK: return [[VAL]] : $Double
14
+ // CHECK-NEXT: }
15
+
16
+ // N.B. Whether by design or due to a bug, nullable NSString globals
17
+ // still import as non-null.
18
+ public func returnStringGlobalVar( ) -> String {
19
+ return Panda . cutenessFactor
20
+ }
21
+ // CHECK-LABEL: sil {{.*}}returnStringGlobalVar{{.*}} () -> @owned String {
22
+ // CHECK: %0 = global_addr @PKPandaCutenessFactor : $*NSString
23
+ // CHECK: [[VAL:%.*]] = load [copy] %0 : $*NSString
24
+ // CHECK: [[BRIDGE:%.*]] = function_ref @_T0SS10FoundationE36_unconditionallyBridgeFromObjectiveCSSSo8NSStringCSgFZ
25
+ // CHECK: [[RESULT:%.*]] = apply [[BRIDGE]](
26
+ // CHECK: return [[RESULT]] : $String
27
+ // CHECK-NEXT: }
28
+
29
+ public func returnNullableStringGlobalVar( ) -> String ? {
30
+ return Panda . cuddlynessFactor
31
+ }
32
+ // CHECK-LABEL: sil {{.*}}returnNullableStringGlobalVar{{.*}} () -> @owned Optional<String> {
33
+ // CHECK: %0 = global_addr @PKPandaCuddlynessFactor : $*NSString
34
+ // CHECK: [[VAL:%.*]] = load [copy] %0 : $*NSString
35
+ // CHECK: [[BRIDGE:%.*]] = function_ref @_T0SS10FoundationE36_unconditionallyBridgeFromObjectiveCSSSo8NSStringCSgFZ
36
+ // CHECK: [[RESULT:%.*]] = apply [[BRIDGE]](
37
+ // CHECK: [[SOME:%.*]] = enum $Optional<String>, #Optional.some!enumelt.1, [[RESULT]]
38
+ // CHECK: return [[SOME]] : $Optional<String>
39
+ // CHECK-NEXT: }
40
+
41
+ // CHECK-LABEL: sil {{.*}}useClass{{.*}}
42
+ // CHECK: bb0([[D:%[0-9]+]] : $Double, [[OPTS:%[0-9]+]] : $SomeClass.Options):
21
43
public func useClass( d: Double , opts: SomeClass . Options ) {
22
- // SIL : [[CTOR:%[0-9]+]] = function_ref @MakeIAMSomeClass : $@convention(c) (Double) -> @autoreleased SomeClass
23
- // SIL : [[OBJ:%[0-9]+]] = apply [[CTOR]]([[D]])
44
+ // CHECK : [[CTOR:%[0-9]+]] = function_ref @MakeIAMSomeClass : $@convention(c) (Double) -> @autoreleased SomeClass
45
+ // CHECK : [[OBJ:%[0-9]+]] = apply [[CTOR]]([[D]])
24
46
let o = SomeClass ( value: d)
25
47
26
- // SIL : [[APPLY_FN:%[0-9]+]] = function_ref @IAMSomeClassApplyOptions : $@convention(c) (SomeClass, SomeClass.Options) -> ()
27
- // SIL : [[BORROWED_OBJ:%.*]] = begin_borrow [[OBJ]]
28
- // SIL : apply [[APPLY_FN]]([[BORROWED_OBJ]], [[OPTS]])
29
- // SIL : end_borrow [[BORROWED_OBJ]] from [[OBJ]]
30
- // SIL : destroy_value [[OBJ]]
48
+ // CHECK : [[APPLY_FN:%[0-9]+]] = function_ref @IAMSomeClassApplyOptions : $@convention(c) (SomeClass, SomeClass.Options) -> ()
49
+ // CHECK : [[BORROWED_OBJ:%.*]] = begin_borrow [[OBJ]]
50
+ // CHECK : apply [[APPLY_FN]]([[BORROWED_OBJ]], [[OPTS]])
51
+ // CHECK : end_borrow [[BORROWED_OBJ]] from [[OBJ]]
52
+ // CHECK : destroy_value [[OBJ]]
31
53
o. applyOptions ( opts)
32
54
}
33
55
34
56
extension SomeClass {
35
- // SIL -LABEL: sil hidden @_T0So9SomeClassC16import_as_memberEABSd6double_tcfc
36
- // SIL : bb0([[DOUBLE:%[0-9]+]] : $Double
37
- // SIL -NOT: value_metatype
38
- // SIL : [[FNREF:%[0-9]+]] = function_ref @MakeIAMSomeClass
39
- // SIL : apply [[FNREF]]([[DOUBLE]])
57
+ // CHECK -LABEL: sil hidden @_T0So9SomeClassC16import_as_memberEABSd6double_tcfc
58
+ // CHECK : bb0([[DOUBLE:%[0-9]+]] : $Double
59
+ // CHECK -NOT: value_metatype
60
+ // CHECK : [[FNREF:%[0-9]+]] = function_ref @MakeIAMSomeClass
61
+ // CHECK : apply [[FNREF]]([[DOUBLE]])
40
62
convenience init ( double: Double ) {
41
63
self . init ( value: double)
42
64
}
@@ -47,6 +69,3 @@ public func useSpecialInit() -> Struct1 {
47
69
// return Struct1(specialLabel:())
48
70
}
49
71
50
- public func useGlobal( ) -> Double {
51
- return Struct1 . globalVar
52
- }
0 commit comments