[swift-evolution] [RFC] #Self
Matthew Johnson
matthew at anandabits.com
Tue May 10 11:05:57 CDT 2016
Sent from my iPad
> On May 10, 2016, at 11:01 AM, Timothy Wood via swift-evolution <swift-evolution at swift.org> wrote:
>
>
>>> On May 10, 2016, at 8:56 AM, Chris Lattner via swift-evolution <swift-evolution at swift.org> wrote:
>>>
>>>
>>> On May 10, 2016, at 7:50 AM, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
>>>
>>> As a compile-time substitution, it could be used in any and all of the examples in your bullet list as a literal text replacement..
>>>
>>> Quick rundown:
>>>
>>> struct A {
>>> ...#Self... // #Self is substituted by A
>>> }
>>>
>>> class B {
>>> ...#Self... // Self is substituted by B
>>> }
>>>
>>> class C {
>>> ... #Self... // Self is substituted by C, which is the defining type at compile time
>>> }
>>
>> I think it would be surprising if #Self produced the name of the enclosing static type: Self produces the dynamic type, and we’d want to preserve consistency if it were named #Self.
>
>
> I’m not sure I understand this comment -- if #Self should mean the same as Self, why would it get added? My whole point in suggesting #Self was that it mirrored #file and #line in that it was a compile time replacement of some static information.
It isn't at all the same. Self is covariant with the dynamic context. #Self, #Type, #StaticType or whatever we call it is statically determined by the lexical context.
>
> -tim
>
> _______________________________________________
> 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/20160510/f9ec9d3a/attachment.html>
More information about the swift-evolution
mailing list