Skip to content

[4.1] Fix for when key is a String rather than NSString. #1448

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 26, 2018

Conversation

johnno1962
Copy link
Contributor

@johnno1962 johnno1962 commented Feb 21, 2018

Taken from #1438

Otherwise you can get the following crash:

Could not cast value of type 'Swift.AnyHashable' (0x1027b3b10) to 'SwiftFoundation.NSObject' (0x101a56668).
2018-02-16 14:30:46.355774+0000 TestFoundation[7306:8715333] Could not cast value of type 'Swift.AnyHashable' (0x1027b3b10) to 'SwiftFoundation.NSObject' (0x101a56668).
(lldb) up
frame #9: 0x000000010165b114 SwiftFoundationNSMutableDictionary.subscript.setter(newValue=some, key=Swift.AnyHashable @ 0x00007fff5fbfcd88, self=0x000060800e181fe0) at NSDictionary.swift:649 646 } 647 set { 648 if let val = newValue { -> 649 �[4ms�[0metObject(val, forKey: key) 650 } else { 651 removeObject(forKey: key) 652 } (lldb) up frame #10: 0x00000001004c0443 TestFoundationstatic Dictionary.twEncode(data=TestFoundation.TwoWayMirror @ 0x00007fff5fbfce00, self=[Key : Value]) at TwoWayMirror.swift:386
383 #if os(Linux)
384 let key = NSString(string: key as! String)
385 #endif
-> 386 dict[key] �[4m=�[0m TwoWayMirror.encode(mirror: &mirror)
387 }
388 return dict
389 }
(lldb)

…get the following crash:

Could not cast value of type 'Swift.AnyHashable' (0x1027b3b10) to 'SwiftFoundation.NSObject' (0x101a56668).
2018-02-16 14:30:46.355774+0000 TestFoundation[7306:8715333] Could not cast value of type 'Swift.AnyHashable' (0x1027b3b10) to 'SwiftFoundation.NSObject' (0x101a56668).
(lldb) up
frame swiftlang#9: 0x000000010165b114 SwiftFoundation`NSMutableDictionary.subscript.setter(newValue=some, key=Swift.AnyHashable @ 0x00007fff5fbfcd88, self=0x000060800e181fe0) at NSDictionary.swift:649
   646 	        }
   647 	        set {
   648 	            if let val = newValue {
-> 649 	                �[4ms�[0metObject(val, forKey: key)
   650 	            } else {
   651 	                removeObject(forKey: key)
   652 	            }
(lldb) up
frame swiftlang#10: 0x00000001004c0443 TestFoundation`static Dictionary.twEncode(data=TestFoundation.TwoWayMirror @ 0x00007fff5fbfce00, self=[Key : Value]) at TwoWayMirror.swift:386
   383 	            #if os(Linux)
   384 	            let key = NSString(string: key as! String)
   385 	            #endif
-> 386 	            dict[key] �[4m=�[0m TwoWayMirror.encode(mirror: &mirror)
   387 	        }
   388 	        return dict
   389 	    }
(lldb)
@johnno1962 johnno1962 changed the title Fix for when key is a String rather than NSString. [4.1] Fix for when key is a String rather than NSString. Feb 21, 2018
@parkera
Copy link
Contributor

parkera commented Feb 22, 2018

Let's get the one in master merged first then come back to this one.

@spevans
Copy link
Contributor

spevans commented Feb 22, 2018

@swift-ci please test

@millenomi
Copy link
Contributor

millenomi commented Feb 22, 2018

The corresponding master branch PR has been merged. (That was #1438.)

@pushkarnk
Copy link
Member

Merged on master

@swift-ci please test and merge

@swift-ci swift-ci merged commit 3578c7e into swiftlang:swift-4.1-branch Feb 26, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants