Skip to content

Commit 5b9ab59

Browse files
committed
[Foundation] NSSet, NSDictionary: Use as! casts to force-bridge elements
This traps with a clear runtime error on failure, rather than simply crashing in the runtime.
1 parent 87604fe commit 5b9ab59

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

stdlib/public/Darwin/Foundation/NSDictionary.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ extension Dictionary : _ObjectiveCBridgeable {
136136
to: T.Type
137137
) {
138138
for i in (0..<count).reversed() {
139-
let bridged = Swift._forceBridgeFromObjectiveC(buffer[i], T.self)
139+
let bridged = buffer[i] as! T
140140
_bridgeInitialize(index: i, of: buffer, to: bridged)
141141
}
142142
}
@@ -225,8 +225,8 @@ extension Dictionary : _ObjectiveCBridgeable {
225225
let anyObjectKey = anyKey as AnyObject
226226
let anyObjectValue = anyValue as AnyObject
227227
builder.add(
228-
key: Swift._forceBridgeFromObjectiveC(anyObjectKey, Key.self),
229-
value: Swift._forceBridgeFromObjectiveC(anyObjectValue, Value.self))
228+
key: anyObjectKey as! Key,
229+
value: anyObjectValue as! Value)
230230
})
231231
result = builder.take()
232232
} else {

stdlib/public/Darwin/Foundation/NSSet.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,8 @@ extension Set : _ObjectiveCBridgeable {
7777
// Swift. See rdar://problem/35995647
7878
var set = Set(minimumCapacity: s.count)
7979
s.enumerateObjects({ (anyMember: Any, _) in
80-
let member = Swift._forceBridgeFromObjectiveC(
81-
anyMember as AnyObject, Element.self)
8280
// FIXME: Log a warning if `member` is already in the set.
83-
set.insert(member)
81+
set.insert(anyMember as AnyObject as! Element)
8482
})
8583
result = set
8684
return
@@ -90,8 +88,7 @@ extension Set : _ObjectiveCBridgeable {
9088
// an NSSet.
9189
var builder = _SetBuilder<Element>(count: s.count)
9290
s.enumerateObjects({ (anyMember: Any, _) in
93-
builder.add(member: Swift._forceBridgeFromObjectiveC(
94-
anyMember as AnyObject, Element.self))
91+
builder.add(member: anyMember as AnyObject as! Element)
9592
})
9693
result = builder.take()
9794
}

0 commit comments

Comments
 (0)