[swift-evolution] [Review] SE-0116: Import Objective-C id as Swift Any type
Joe Groff
jgroff at apple.com
Wed Jul 20 15:52:18 CDT 2016
> On Jul 8, 2016, at 11:19 AM, Ben Langmuir <blangmuir at apple.com> wrote:
>
> Hey Joe,
Sorry Ben, missed this when you sent it a couple weeks ago.
> I’m +1 on the overall direction, but I have some questions/concerns about the "Ambivalent dynamic casting from Any” section.
>
> 1) When you suggest that `x as String` succeeds but `x as NSString` fails, I assume this would only be true *after* SE-0083, since otherwise we’d be violating transitivity of `as` casts?
Right. I think we'll have to subset this part out of the proposal altogether and leave casting as is, though, due to time constraints.
> 2) Have you considered the only allowing `as` casts to the bridged type (e.g. String) for values coming from `id` at the language level, but providing some guaranteed optimization that if you immediately convert to the ObjC class type (ie. NSString(x as! String)) we give zero-cost round-tripping? Would that be detectable? I think making `value as? NSFoo` fail or succeed depending on whether the value came from ObjC will be a source of subtle bugs. What if I have multiple sources of values - some from ObjC, some from Swift - and stuff them into an [Any].
Yeah, John's looking into that as a general peephole.
-Joe
More information about the swift-evolution
mailing list