mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
These classes don't show up well in generated headers (rdar://problem/20855568), can't actually be allocated from Objective-C (rdar://problem/17184317), and make the story of "what is exposed to Objective-C" more complicated. Better to just disallow them. All classes are still "id-compatible" in that they can be converted to AnyObject and passed to Objective-C, they secretly implement NSObjectProtocol (via our SwiftObject root class), and their members can still be individually exposed to Objective-C. The frontend flag -disable-objc-attr-requires-foundation-module will disable this requirement as well, which is still necessary for both the standard library and a variety of tests I didn't feel like transforming. Swift SVN r29760
48 lines
1.1 KiB
Swift
48 lines
1.1 KiB
Swift
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 }
|
|
}
|