Thank you for the feedback. Answers online.

Sent from my iPhone

> On Jul 16, 2016, at 7:38 PM, Andrew Trick <[email protected]> wrote:
> 
> 
>> On Jul 16, 2016, at 6:46 PM, Arnold Schwaighofer via swift-evolution 
>> <[email protected]> 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.]

> Frankly, the type was a nicer way to do this, by I understand removing it 
> from the API surface.
> 
> -Andy
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to