Commits

Jordan Rose committed d527df57d93
[ClangImporter] Force NSDictionary's subscript index to conform to NSCopying. NSDictionary's implementation of -objectForKeyedSubscript: takes an id instead of 'id <NSCopying>' because a dictionary could in theory have non- copyable keys. However, Swift requires the getter and setter for a subscript operator to have the same type. Therefore, we unilaterally import the getter as 'subscript(key : NSCopyingProto) { get }', and just rely on the fact that the representation of 'id' and 'id <NSCopying>' is the same. What doesn't change: - objectForKey() still takes a plain 'id', in the rare cases that that is useful. - Looping over an NSDictionary still gives you (id, id) pairs, on the grounds that if you actually want to do something with the key, it probably isn't going to be copying it. Without this, doing something useful with the key would require an explicit cast. - If any other subscript indexes don't match up, the subscript is dropped (r8636). <rdar://problem/14397360> Swift SVN r9424