Files
swift-mirror/test/Serialization/Inputs/def_basic_objc.sil
Slava Pestov 8fe8b89b0f SIL: Terminology change: [fragile] => [serialized]
Also, add a third [serializable] state for functions whose bodies we
*can* serialize, but only do so if they're referenced from another
serialized function.

This will be used for bodies synthesized for imported definitions,
such as init(rawValue:), etc, and various thunks, but for now this
change is NFC.
2017-03-29 16:47:28 -07:00

71 lines
2.9 KiB
Plaintext

sil_stage raw // CHECK: sil_stage raw
import Builtin
import Swift
import Foundation
protocol SomeProtocol { }
class SomeClass : SomeProtocol { }
// CHECK-LABEL: @objc_classes : $@convention(thin) (@thick NSObject.Type) -> ()
sil [serialized] @objc_classes : $@convention(thin) (@thick NSObject.Type) -> () {
bb0(%0 : $@thick NSObject.Type):
%1 = thick_to_objc_metatype %0 : $@thick NSObject.Type to $@objc_metatype NSObject.Type
// CHECK: %2 = alloc_ref_dynamic [objc] %1 : $@objc_metatype NSObject.Type, $NSObject
%2 = alloc_ref_dynamic [objc] %1 : $@objc_metatype NSObject.Type, $NSObject
%3 = value_metatype $@thick NSObject.Type, %2 : $NSObject
dealloc_partial_ref %2 : $NSObject, %3 : $@thick NSObject.Type
%void = tuple ()
return %void : $()
} // CHECK: } // end sil function 'objc_classes'
class Bas : NSObject {
var strRealProp : String
override init()
}
sil [serialized] @test_super_method : $@convention(method) (@guaranteed Bas) -> Bas
sil [serialized] @swift_StringToNSString : $@convention(thin) (@inout String) -> @owned NSString
sil [serialized] @_T0SSSSycSSmcfC : $@convention(thin) (@thin String.Type) -> @owned String
protocol SomeClassProtocol : class {}
// CHECK-LABEL: sil public_external [serialized] @metatype_to_object
// CHECK: {{%.*}} = objc_metatype_to_object {{%.*}} : $@objc_metatype SomeClass.Type to $AnyObject
// CHECK: {{%.*}} = objc_existential_metatype_to_object {{%.*}} : $@objc_metatype SomeClassProtocol.Type to $AnyObject
sil [serialized] @metatype_to_object : $@convention(thin) (@objc_metatype SomeClass.Type, @objc_metatype SomeClassProtocol.Type) -> @owned (AnyObject, AnyObject) {
entry(%a : $@objc_metatype SomeClass.Type, %b : $@objc_metatype SomeClassProtocol.Type):
%x = objc_metatype_to_object %a : $@objc_metatype SomeClass.Type to $AnyObject
%y = objc_existential_metatype_to_object %b : $@objc_metatype SomeClassProtocol.Type to $AnyObject
%z = tuple (%x : $AnyObject, %y : $AnyObject)
return %z : $(AnyObject, AnyObject)
}
@objc protocol ObjCProto {}
// CHECK-LABEL: sil public_external [serialized] @protocol_conversion
sil [serialized] @protocol_conversion : $@convention(thin) () -> @owned Protocol {
entry:
// CHECK: {{%.*}} = objc_protocol #ObjCProto : $Protocol
%p = objc_protocol #ObjCProto : $Protocol
return %p : $Protocol
}
public func serialize_all() {
}
sil [serialized] [transparent] @_T014def_basic_objc13serialize_allyyF : $@convention(thin) () -> () {
bb0:
%26 = function_ref @objc_classes : $@convention(thin) (@thick NSObject.Type) -> ()
%79 = function_ref @test_super_method : $@convention(method) (@guaranteed Bas) -> Bas
%125 = function_ref @metatype_to_object : $@convention(thin) (@objc_metatype SomeClass.Type, @objc_metatype SomeClassProtocol.Type) -> @owned (AnyObject, AnyObject)
%126 = function_ref @protocol_conversion : $@convention(thin) () -> @owned Protocol
%119 = tuple ()
return %119 : $()
}