@@ -68,3 +68,40 @@ bb7(%64 : $Optional<Data>):
68
68
%102 = tuple ()
69
69
return %102 : $()
70
70
}
71
+
72
+ sil [Osize] @test_dont_crash : $@convention(thin) (@owned MyObject) -> () {
73
+ bb0(%0: $MyObject):
74
+ %35 = metatype $@objc_metatype MyObject.Type
75
+ %41 = function_ref @getData : $@convention(thin) () -> @owned Data
76
+ %43 = apply %41() : $@convention(thin) () -> @owned Data
77
+ %44 = function_ref @$s10Foundation4DataV19_bridgeToObjectiveCSo6NSDataCyF : $@convention(method) (@guaranteed Data) -> @owned NSData
78
+ %45 = apply %44(%43) : $@convention(method) (@guaranteed Data) -> @owned NSData
79
+ %46 = enum $Optional<NSData>, #Optional.some!enumelt, %45 : $NSData
80
+ br bb4
81
+
82
+ bb4:
83
+ release_value %0 : $MyObject
84
+ release_value %43 : $Data
85
+ %50 = objc_method %35 : $@objc_metatype MyObject.Type, #MyObject.take!foreign : (MyObject.Type) -> (Data?) -> Data?, $@convention(objc_method) (Optional<NSData>, @objc_metatype MyObject.Type) -> @autoreleased Optional<NSData>
86
+ %51 = apply %50(%46, %35) : $@convention(objc_method) (Optional<NSData>, @objc_metatype MyObject.Type) -> @autoreleased Optional<NSData>
87
+ release_value %46 : $Optional<NSData>
88
+ switch_enum %51 : $Optional<NSData>, case #Optional.some!enumelt: bb5, case #Optional.none!enumelt: bb6
89
+
90
+ bb5(%54 : $NSData):
91
+ %55 = function_ref @$s10Foundation4DataV36_unconditionallyBridgeFromObjectiveCyACSo6NSDataCSgFZ : $@convention(method) (@guaranteed Optional<NSData>, @thin Data.Type) -> @owned Data
92
+ %56 = enum $Optional<NSData>, #Optional.some!enumelt, %54 : $NSData
93
+ %57 = metatype $@thin Data.Type
94
+ %58 = apply %55(%56, %57) : $@convention(method) (@guaranteed Optional<NSData>, @thin Data.Type) -> @owned Data
95
+ %59 = enum $Optional<Data>, #Optional.some!enumelt, %58 : $Data
96
+ release_value %56 : $Optional<NSData>
97
+ br bb7(%59 : $Optional<Data>)
98
+
99
+ bb6:
100
+ %62 = enum $Optional<Data>, #Optional.none!enumelt
101
+ br bb7(%62 : $Optional<Data>)
102
+
103
+ bb7(%64 : $Optional<Data>):
104
+ release_value %64 : $Optional<Data>
105
+ %102 = tuple ()
106
+ return %102 : $()
107
+ }
0 commit comments