[swift-evolution] Class and Subclass Existentials (Round 2)

Matthew Johnson matthew at anandabits.com
Thu Feb 9 13:43:29 CST 2017



Sent from my iPad

> On Feb 9, 2017, at 1:30 PM, Hooman Mehr via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>>> On Feb 9, 2017, at 10:47 AM, Joe Groff via swift-evolution <swift-evolution at swift.org> wrote:
>>> On Feb 9, 2017, at 4:26 AM, Step Christopher via swift-evolution <swift-evolution at swift.org> wrote:
>>> Looks good. Minor comments below:
>>> The typealias 'T5' is repeated as both an initial composition, and as a demonstration of combining typealiases. 
>>> 
>>>> This proposal merges the concepts of class and AnyObject, which now have the same meaning: they represent an existential for classes. They are four solutions to this dilemna:
>>>> Do nothing.
>>>> Replace all uses of AnyObject by class, breaking source compatibility.
>>>> Replace all uses of class by AnyObject, breaking source compatibility.
>>>> Redefine AnyObject as typealias AnyObject = class.
>>> I agree with other comments on recommending 4 here, and covering the others as alternatives
>> I agree that we need the typealias for compatibility. I think it's still worth discussing whether the `AnyObject` typealias should *only* be there for compatibility; it could be deprecated or obsoleted in Swift 4 or future language versions.
> 
> I think it might be worth keeping to provide a more sensible capitalization alternative than lower case “class” when used as a type name:
> 
> var obj: class // this looks weird because of capitalization.
> 
> var obj: AnyObject // this looks better.

I agree that it looks better and would choose AnyObject if source compatibility weren't an issue.  One option that wasn't listed was to drop 'class' but use a multi-release deprecation strategy and a fix-it to facilitate a smooth transition.  If the community is willing to adopt this approach it would be my first choice.

> 
>> 
>> -Joe
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170209/c2871671/attachment.html>


More information about the swift-evolution mailing list