> On Jul 16, 2016, at 8:36 PM, Arnold <aschwaigho...@apple.com> wrote:
> 
> Thank you for the feedback. Answers online.
> 
> Sent from my iPhone
> 
> On Jul 16, 2016, at 7:38 PM, Andrew Trick <atr...@apple.com 
> <mailto:atr...@apple.com>> wrote:
> 
>> 
>>> On Jul 16, 2016, at 6:46 PM, Arnold Schwaighofer via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> Replace isUniquelyReferenced<T : NonObjectiveCBase> by 
>>> isUniquelyReferencedUnsafe<T: AnyObject> and remove the NonObjectiveCBase 
>>> class from the standard library.
>>> 
>>> 
>> 
>> So we’ll have:
>> 
>> - isUniquelyReferencedNonObjC(object): true iff object is uniquely 
>> referenced and NonObjC
>> 
>> - isUniquelyReferencedUnsafe(object): true iff object is uniquely reference, 
>> assert NonObjC
>> 
>> I’m going to be picky. The “Unsafe” suffix doesn’t make sense to me. If you 
>> think this is an unsafe API then it should be:
>> “unsafeIsUniquelyReferenced”.
>> 
>> But I don’t really see how it is unsafe in the usual sense. If you want to 
>> convey that the programmer needs to satisfy some precondition, which is not 
>> generally associated with unsafety, then it should be:
>> “isUniquelyReferencedAssumingNonObjC”
>> 
> 
> Makes sense to me. I think it is unsafe in the sense if you don't satisfy the 
> precondition the resulting behavior is undefined in modes other than -Onone 
> and not checked by a precondition predicate that traps.
> 
>> unsafeIsUniquelyReferenced
> 
> I find it kind of nice to recognize a predicate by the 'is' prefix. All 
> unsafe APIs start with the word unsafe though. I could not find an unsafe 
> freestanding predicate.
> 
> [As the implementor of the underlying builtin you may remember that it is not 
> actually undefined and will return a implementation defined value (false) for 
> objc classes. But we might not want to guarantee this going forward.]


Oh yeah. I think I only kept the two versions for fear of breaking the API. 
Since you’re renaming the second one anyway, why not just delete it with a 
fixit that it's renamed to isUniquelyReferencedNonObjC?

The “assuming” version of the API is extremely confusing in addition to being 
useless.

-Andy
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to