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

David Hart david at hartbit.com
Thu Feb 9 14:44:29 CST 2017


> On 9 Feb 2017, at 20:43, Matthew Johnson via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
> 
> 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.

You mean option 3?

>> 
>>> 
>>> -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
> _______________________________________________
> 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/54e953fb/attachment.html>


More information about the swift-evolution mailing list