DIP 1003: remove `body` as a keyword

Basile B. via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Thu Dec 15 13:31:56 PST 2016


On Thursday, 15 December 2016 at 21:19:30 UTC, Meta wrote:
> On Thursday, 15 December 2016 at 15:31:40 UTC, Basile B. wrote:
>> On Sunday, 11 December 2016 at 20:27:36 UTC, Meta wrote:
>>> On Sunday, 11 December 2016 at 11:33:40 UTC, Basile B. wrote:
>>>> DIP 1003 is faddish. It would really be better to have a 
>>>> system that would allow any keyword to be used as 
>>>> identifier. An escape system is the key.
>>>
>>> It would also guarantee that the DIP would not be accepted. 
>>> With this DIP I aimed
>>
>> Sorry in a previous post there's been a confusion from my 
>> part, I thought the author was "Cauterite".
>>
>>> for the smallest possible change that would alleviate the 
>>> problem of not being able to use `body` as a symbol name, 
>>> hoping that the smallness of the problem and ease of 
>>> implementation would make it much more likely to be accepted.
>>
>> I won't insist too much but to be clear, the escape solution 
>> is incredibly simple to implement (7 SLOC !). I've decided to 
>> go further in order to demonstrate it:
>>
>> https://github.com/dlang/dmd/pull/6324
>
> I saw your PR but I don't really agree that it's a good 
> solution. If you have to preface the symbol with # then you 
> might as well just use a trailing underscore, like "body_".

No, there are 2 differences.

- 1: even if in the source you write #body, the identifier, as 
known by the compiler, is really just "body", like shown in the 
test that uses `pragma(identifier)`. For example a serializer 
would write "body" without any kind of processing (unlike what 's 
to be done using the basic underscore solution).

- 2: the underscore is a valid identifier char, # is not so you 
cannot distinguish a keyword suffixed with an underscore because 
it might be intentional, i.e part of the identifier.




More information about the Digitalmars-d-announce mailing list