Skip to content

Commit f8fe8f2

Browse files
authored
Merge pull request #1002 from norio-nomura/fix-sr-4903-on-31
2 parents acff1e2 + 0ebfb14 commit f8fe8f2

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

Foundation/NSArray.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,13 @@ open class NSArray : NSObject, NSCopying, NSMutableCopying, NSSecureCoding, NSCo
310310
if val1 != val2 {
311311
return false
312312
}
313+
} else if let val1 = object(at: idx) as? _ObjectBridgeable,
314+
let val2 = otherArray[idx] as? _ObjectBridgeable {
315+
if !(val1._bridgeToAnyObject() as! NSObject).isEqual(val2._bridgeToAnyObject()) {
316+
return false
317+
}
318+
} else {
319+
return false
313320
}
314321
}
315322

TestFoundation/TestNSArray.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,12 @@ class TestNSArray : XCTestCase {
421421

422422
XCTAssertFalse(array1.isEqual(nil))
423423
XCTAssertFalse(array1.isEqual(NSObject()))
424+
425+
let objectsArray1 = NSArray(array: [NSArray(array: [0])])
426+
let objectsArray2 = NSArray(array: [NSArray(array: [1])])
427+
XCTAssertFalse(objectsArray1 == objectsArray2)
428+
XCTAssertFalse(objectsArray1.isEqual(objectsArray2))
429+
XCTAssertFalse(objectsArray1.isEqual(to: Array(objectsArray2)))
424430
}
425431

426432
/// - Note: value type conversion will destroy identity. So use index(of:) instead of indexOfObjectIdentical(to:)

TestFoundation/TestNSDictionary.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,24 @@ class TestNSDictionary : XCTestCase {
134134

135135
XCTAssertFalse(dict1.isEqual(nil))
136136
XCTAssertFalse(dict1.isEqual(NSObject()))
137+
138+
let nestedDict1 = NSDictionary(dictionary: [
139+
"key.entities": [
140+
["key": 0]
141+
]
142+
])
143+
let nestedDict2 = NSDictionary(dictionary: [
144+
"key.entities": [
145+
["key": 1]
146+
]
147+
])
148+
XCTAssertFalse(nestedDict1 == nestedDict2)
149+
XCTAssertFalse(nestedDict1.isEqual(nestedDict2))
150+
XCTAssertFalse(nestedDict1.isEqual(to: [
151+
"key.entities": [
152+
["key": 1]
153+
]
154+
]))
137155
}
138156

139157
func test_copying() {

0 commit comments

Comments
 (0)