[swift-evolution] 100% bikeshed topic: DictionaryLiteral

Chris Lattner clattner at nondot.org
Tue Jan 9 01:08:52 CST 2018


On Jan 8, 2018, at 11:07 PM, Nate Cook <nate at natecook.com> wrote:
>>> 
>>> The old name can live on indefinitely via a typealias (which has no ABI consequences, so could be retired at a later date once everyone has had plenty of time to address the deprecation warnings). Removing it as not carrying its weight (and instead using `[(Key,Value)]`, which is basically what it’s a wrapper for) is probably off the table for source stability reasons.
>> 
>> I’m not familiar with this type at all, so I apologize for the dumb question but… why was this added in the first place?  If it is the wrong thing, why not just deprecate it in Swift 5 and remove it in a future release?  That avoids it being an ABI concern, because we could make it be force inlined into any client code.
> 
> According to now-gone doc comments, it's intended to be used when providing the children for a custom mirror (that's the only API I know of that uses the type). The order of elements there is important, but given how scarcely used the type is, an array of tuples might be a reasonable (though source-breaking) substitute. 
> 
>> Finally, is anyone actually using this type?
> 
> In the standard library, we have this Mirror initializer: https://developer.apple.com/documentation/swift/mirror/1540408-init <https://developer.apple.com/documentation/swift/mirror/1540408-init>. If anyone is customizing their type's mirror, it's a good bet that they're calling that init and passing a literal that would break if the argument changed to an array. The translation should be mechanical, so maybe it could be a migrator fix? (I don't know enough about how that works to know.)

Ah I see.  What is the plan for Mirrors?  I thought they had numerous known deficiencies and should be replaced with a better reflection system.  Are they going to make the jump to ABI stability?

-Chris

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20180108/bfa84edf/attachment.html>


More information about the swift-evolution mailing list