mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
When determining whether a given normal protocol conformance is “retroactive”, consider an overlay module to be equivalent to its underlying Clang module. Therefore, don’t classify conformances within the overlay as “retroactive”, simplifying some common manglings (e.g., NSObject’s Hashable conformance is no longer considered retroactive) and better capturing the intent.
142 lines
3.0 KiB
Swift
142 lines
3.0 KiB
Swift
// Fake Foundation module for testing bridging.
|
|
|
|
@_exported import ObjectiveC
|
|
@_exported import Foundation // clang module
|
|
|
|
extension String : _ObjectiveCBridgeable {
|
|
public func _bridgeToObjectiveC() -> NSString {
|
|
return NSString()
|
|
}
|
|
public static func _forceBridgeFromObjectiveC(
|
|
_ x: NSString,
|
|
result: inout String?
|
|
) {
|
|
}
|
|
public static func _conditionallyBridgeFromObjectiveC(
|
|
_ x: NSString,
|
|
result: inout String?
|
|
) -> Bool {
|
|
return true
|
|
}
|
|
public static func _unconditionallyBridgeFromObjectiveC(
|
|
_ x: NSString?
|
|
) -> String {
|
|
return String()
|
|
}
|
|
}
|
|
|
|
extension Int : _ObjectiveCBridgeable {
|
|
public func _bridgeToObjectiveC() -> NSNumber {
|
|
return NSNumber()
|
|
}
|
|
public static func _forceBridgeFromObjectiveC(
|
|
_ x: NSNumber,
|
|
result: inout Int?
|
|
) {
|
|
}
|
|
public static func _conditionallyBridgeFromObjectiveC(
|
|
_ x: NSNumber,
|
|
result: inout Int?
|
|
) -> Bool {
|
|
return true
|
|
}
|
|
public static func _unconditionallyBridgeFromObjectiveC(
|
|
_ x: NSNumber?
|
|
) -> Int {
|
|
return 0
|
|
}
|
|
}
|
|
|
|
extension Array : _ObjectiveCBridgeable {
|
|
public func _bridgeToObjectiveC() -> NSArray {
|
|
return NSArray()
|
|
}
|
|
public static func _forceBridgeFromObjectiveC(
|
|
_ x: NSArray,
|
|
result: inout Array?
|
|
) {
|
|
}
|
|
public static func _conditionallyBridgeFromObjectiveC(
|
|
_ x: NSArray,
|
|
result: inout Array?
|
|
) -> Bool {
|
|
return true
|
|
}
|
|
public static func _unconditionallyBridgeFromObjectiveC(
|
|
_ x: NSArray?
|
|
) -> Array {
|
|
return Array()
|
|
}
|
|
}
|
|
|
|
extension Dictionary : _ObjectiveCBridgeable {
|
|
public func _bridgeToObjectiveC() -> NSDictionary {
|
|
return NSDictionary()
|
|
}
|
|
public static func _forceBridgeFromObjectiveC(
|
|
_ x: NSDictionary,
|
|
result: inout Dictionary?
|
|
) {
|
|
}
|
|
public static func _conditionallyBridgeFromObjectiveC(
|
|
_ x: NSDictionary,
|
|
result: inout Dictionary?
|
|
) -> Bool {
|
|
return true
|
|
}
|
|
public static func _unconditionallyBridgeFromObjectiveC(
|
|
_ x: NSDictionary?
|
|
) -> Dictionary {
|
|
return Dictionary()
|
|
}
|
|
}
|
|
|
|
extension Set : _ObjectiveCBridgeable {
|
|
public func _bridgeToObjectiveC() -> NSSet {
|
|
return NSSet()
|
|
}
|
|
public static func _forceBridgeFromObjectiveC(
|
|
_ x: NSSet,
|
|
result: inout Set?
|
|
) {
|
|
}
|
|
public static func _conditionallyBridgeFromObjectiveC(
|
|
_ x: NSSet,
|
|
result: inout Set?
|
|
) -> Bool {
|
|
return true
|
|
}
|
|
public static func _unconditionallyBridgeFromObjectiveC(
|
|
_ x: NSSet?
|
|
) -> Set {
|
|
return Set()
|
|
}
|
|
}
|
|
|
|
extension NSError : Error {
|
|
public var _domain: String { return domain }
|
|
public var _code: Int { return code }
|
|
}
|
|
|
|
extension AnyHashable : _ObjectiveCBridgeable {
|
|
public func _bridgeToObjectiveC() -> NSObject {
|
|
fatalError()
|
|
}
|
|
public static func _forceBridgeFromObjectiveC(
|
|
_ x: NSObject,
|
|
result: inout AnyHashable?
|
|
) {
|
|
}
|
|
public static func _conditionallyBridgeFromObjectiveC(
|
|
_ x: NSObject,
|
|
result: inout AnyHashable?
|
|
) -> Bool {
|
|
fatalError()
|
|
}
|
|
public static func _unconditionallyBridgeFromObjectiveC(
|
|
_ x: NSObject?
|
|
) -> AnyHashable {
|
|
fatalError()
|
|
}
|
|
}
|