[ ArgumentList ] vs. @( ArgumentList )

Tobias Pankrath tobias at pankrath.net
Thu Nov 8 03:39:24 PST 2012


On Thursday, 8 November 2012 at 11:01:13 UTC, Jonas Drewsen wrote:
> On Thursday, 8 November 2012 at 00:03:34 UTC, Andrei 
> Alexandrescu wrote:
>> On 11/7/12 10:24 PM, Walter Bright wrote:
>>> On 11/7/2012 11:40 AM, Jonas Drewsen wrote:
>>>> I we were to allow for @foobar style UDA then "safe" would 
>>>> have to be
>>>> a reserved
>>>> keyword somehow. Otherwise I do not know what this would 
>>>> mean:
>>>>
>>>> struct safe { }
>>>> @safe void foobar() { }
>>>
>>> Yes, I agree this is a significant problem.
>>>
>>
>> I think it's solvable. The basic approach would be to plop 
>> types "safe", "nothrow" etc. in object.di and then let them 
>> just behave like all other arguments.
>
> The original argument that the @ in front of @safe is a way to 
> prevent introducing new keywords is all gone then since "safe" 
> becomes a normal symbol which is reserved in the library and in 
> the compiler to let it do its magic.
>
> Then @safe could just as well be a normal builtin storage class 
> called "safe".
>
> * Plopping types "safe","nothrow" etc. into object.di would be 
> a breaking change.
> * Making @safe, @nothrow into keywords called "safe", "nothrow" 
> would be breaking change.
>
> The latter would be the cleanest cut and not have the 
> semantic/parse stage problems that Walter mentioned.
>
> Another option would to enforce parenthesis @(safe) for UDA 
> which would make it less nice for the eyes to look at.
>
> /Jonas

Not safe but @safe should become a keyword.


More information about the Digitalmars-d mailing list