5
5
// RUN: %target-swift-frontend -emit-sil -O -sdk %S/Inputs -I %S/Inputs -I %t/APINotes -enable-source-import -primary-file %s | FileCheck -check-prefix=OPT %s
6
6
7
7
// REQUIRES: objc_interop
8
- // REQUIRES: rdar24894993
9
8
10
9
import Foundation
11
10
import gizmo
@@ -17,7 +16,7 @@ import gizmo
17
16
18
17
// OPT-LABEL: sil hidden @_TF21objc_nonnull_lie_hack10makeObjectFT_GSqCSo8NSObject_
19
18
// OPT: [[OPT:%.*]] = unchecked_ref_cast
20
- // OPT: select_enum [[OPT]] : $Optional<NSObject>{{.*}} case #Optional.none!enumelt
19
+ // OPT: switch_enum [[OPT]] : $Optional<NSObject>, case #Optional.none!enumelt: [[NIL:bb[0-9]+]]
21
20
func makeObject( ) -> NSObject ? {
22
21
let foo : NSObject ? = NSObject ( )
23
22
if foo == nil {
@@ -26,27 +25,13 @@ func makeObject() -> NSObject? {
26
25
return foo
27
26
}
28
27
29
- // OPT-LABEL: sil hidden @_TF21objc_nonnull_lie_hack18callInstanceMethod
30
- // OPT: [[METHOD:%[0-9]+]] = class_method [volatile] [[OBJ:%[0-9]+]] : $Gizmo, #Gizmo.nonNilGizmo!1.foreign : Gizmo -> () -> Gizmo , $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
31
- // OPT: [[NONOPTIONAL:%[0-9]+]] = apply [[METHOD]]([[OBJ]]) : $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
32
- // OPT: [[OPTIONAL:%[0-9]+]] = unchecked_ref_cast [[NONOPTIONAL]]
33
- // OPT: select_enum [[OPTIONAL]] : $Optional<Gizmo>
34
- func callInstanceMethod( gizmo: Gizmo ) -> Gizmo ? {
35
- let foo : Gizmo ? = gizmo. nonNilGizmo ( )
36
-
37
- if foo == nil {
38
- print ( " nil " )
39
- }
40
- return foo
41
- }
42
-
43
28
// OPT-LABEL: sil hidden @_TF21objc_nonnull_lie_hack15callClassMethod
44
29
// OPT: [[METATYPE:%[0-9]+]] = metatype $@thick Gizmo.Type
45
30
// OPT: [[METHOD:%[0-9]+]] = class_method [volatile] [[METATYPE]] : $@thick Gizmo.Type, #Gizmo.nonNilGizmo!1.foreign : Gizmo.Type -> () -> Gizmo , $@convention(objc_method) (@objc_metatype Gizmo.Type) -> @autoreleased Gizmo
46
31
// OPT: [[OBJC_METATYPE:%[0-9]+]] = metatype $@objc_metatype Gizmo.Type
47
32
// OPT: [[NONOPTIONAL:%[0-9]+]] = apply [[METHOD]]([[OBJC_METATYPE]]) : $@convention(objc_method) (@objc_metatype Gizmo.Type) -> @autoreleased Gizmo
48
33
// OPT: [[OPTIONAL:%[0-9]+]] = unchecked_ref_cast [[NONOPTIONAL]] : $Gizmo to $Optional<Gizmo>
49
- // OPT: select_enum [[OPTIONAL]] : $Optional<Gizmo>
34
+ // OPT: switch_enum [[OPTIONAL]] : $Optional<Gizmo>
50
35
func callClassMethod( ) -> Gizmo ? {
51
36
let foo : Gizmo ? = Gizmo . nonNilGizmo ( )
52
37
if foo == nil {
@@ -55,11 +40,25 @@ func callClassMethod() -> Gizmo? {
55
40
return foo
56
41
}
57
42
58
- // OPT-LABEL: sil hidden @_TF21objc_nonnull_lie_hack12loadPropertyFCSo5GizmoGSqS0__ : $@convention(thin) (@owned Gizmo) -> @owned Optional<Gizmo>
43
+ // OPT-LABEL: sil hidden @_TTSf4g___TF21objc_nonnull_lie_hack18callInstanceMetho
44
+ // OPT: [[METHOD:%[0-9]+]] = class_method [volatile] [[OBJ:%[0-9]+]] : $Gizmo, #Gizmo.nonNilGizmo!1.foreign : Gizmo -> () -> Gizmo , $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
45
+ // OPT: [[NONOPTIONAL:%[0-9]+]] = apply [[METHOD]]([[OBJ]]) : $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
46
+ // OPT: [[OPTIONAL:%[0-9]+]] = unchecked_ref_cast [[NONOPTIONAL]]
47
+ // OPT: switch_enum [[OPTIONAL]] : $Optional<Gizmo>
48
+ func callInstanceMethod( gizmo: Gizmo ) -> Gizmo ? {
49
+ let foo : Gizmo ? = gizmo. nonNilGizmo ( )
50
+
51
+ if foo == nil {
52
+ print ( " nil " )
53
+ }
54
+ return foo
55
+ }
56
+
57
+ // OPT-LABEL: sil hidden @_TTSf4g___TF21objc_nonnull_lie_hack12loadPropertyFT5gizmoCSo5Gizmo_GSqS0__
59
58
// OPT: [[GETTER:%[0-9]+]] = class_method [volatile] [[OBJ:%[0-9]+]] : $Gizmo, #Gizmo.nonNilGizmoProperty!getter.1.foreign : Gizmo -> () -> Gizmo , $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
60
59
// OPT: [[NONOPTIONAL:%[0-9]+]] = apply [[GETTER]]([[OBJ]]) : $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
61
60
// OPT: [[OPTIONAL:%[0-9]+]] = unchecked_ref_cast [[NONOPTIONAL]] : $Gizmo to $Optional<Gizmo>
62
- // OPT: select_enum [[OPTIONAL]] : $Optional<Gizmo>,
61
+ // OPT: switch_enum [[OPTIONAL]] : $Optional<Gizmo>,
63
62
func loadProperty( gizmo: Gizmo ) -> Gizmo ? {
64
63
let foo : Gizmo ? = gizmo. nonNilGizmoProperty
65
64
if foo == nil {
@@ -68,11 +67,11 @@ func loadProperty(gizmo: Gizmo) -> Gizmo? {
68
67
return foo
69
68
}
70
69
71
- // OPT-LABEL: sil hidden @_TF21objc_nonnull_lie_hack19loadUnownedPropertyFCSo5GizmoGSqS0__
70
+ // OPT-LABEL: sil hidden @_TTSf4g___TF21objc_nonnull_lie_hack19loadUnownedPropertyFT5gizmoCSo5Gizmo_GSqS0__
72
71
// OPT: [[GETTER:%[0-9]+]] = class_method [volatile] [[OBJ:%[0-9]+]] : $Gizmo, #Gizmo.unownedNonNilGizmoProperty!getter.1.foreign : Gizmo -> () -> Gizmo , $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
73
72
// OPT: [[NONOPTIONAL:%[0-9]+]] = apply [[GETTER]]([[OBJ]]) : $@convention(objc_method) (Gizmo) -> @autoreleased Gizmo
74
73
// OPT: [[OPTIONAL:%[0-9]+]] = unchecked_ref_cast [[NONOPTIONAL]] : $Gizmo to $Optional<Gizmo>
75
- // OPT: select_enum [[OPTIONAL]] : $Optional<Gizmo>
74
+ // OPT: switch_enum [[OPTIONAL]] : $Optional<Gizmo>
76
75
func loadUnownedProperty( gizmo: Gizmo ) -> Gizmo ? {
77
76
let foo : Gizmo ? = gizmo. unownedNonNilGizmoProperty
78
77
if foo == nil {
0 commit comments