Make _convertNSArrayToArray work for non-verbatim bridged types.

The runtime diagnostics here are awful, but the monkey dances
<rdar://problem/16899681>.



Swift SVN r18121
This commit is contained in:
Doug Gregor
2014-05-15 19:25:58 +00:00
parent 87904b8228
commit 01f3f7777e
2 changed files with 13 additions and 11 deletions

View File

@@ -557,7 +557,10 @@ func asNSArray<T>(array: T[]) -> NSArray {
/// The entry point for bridging `NSArray` to `Array`.
func _convertNSArrayToArray<T>(nsarr: NSArray) -> T[] {
return T[](ArrayBuffer(reinterpretCast(nsarr) as CocoaArray))
if let arr = T[].bridgeFromObjectiveC(nsarr) {
return arr
}
fatal("NSArray does not bridge to array")
}
/// The entry point for bridging 'Array' to 'NSArray'.
@@ -580,7 +583,8 @@ extension Array : _ConditionallyBridgedToObjectiveC {
}
static func bridgeFromObjectiveC(x: NSArray) -> Array<T>? {
fatal("implement")
let anyArr = AnyObject[](ArrayBuffer(reinterpretCast(x) as CocoaArray))
return _arrayBridgedDownCast(anyArr)
}
@conversion func __conversion() -> NSArray {