import Foundation class FromOtherFile: Proto { // Not objc or dynamic, so only a vtable entry init(native: Int) {} func nativeMethod() {} var nativeProp: Int = 0 subscript(native native: Int) -> Int { get { return native } set {} } // @objc, so it has an ObjC entry point but can also be dispatched // by vtable @objc init(objc: Int) {} @objc func objcMethod() {} @objc var objcProp: Int = 0 @objc subscript(objc objc: Int) -> Int { get { return objc } set {} } // dynamic, so it has only an ObjC entry point dynamic init(dynamic: Int) {} dynamic func dynamicMethod() {} dynamic var dynamicProp: Int = 0 dynamic subscript(dynamic dynamic: Int) -> Int { get { return dynamic } set {} } func overriddenByDynamic() {} @NSManaged var managedProp: Int } @objc class ObjCOtherFile : NSObject {} extension ObjCOtherFile { func extensionMethod() {} var extensionProp: Int { return 0 } class var extensionClassProp: Int { return 0 } dynamic func dynExtensionMethod() {} dynamic var dynExtensionProp: Int { return 0 } dynamic class var dynExtensionClassProp: Int { return 0 } }