[ ArgumentList ] vs. @( ArgumentList )

deadalnix deadalnix at gmail.com
Fri Nov 9 06:28:40 PST 2012


Le 08/11/2012 12:01, Jonas Drewsen a écrit :
> 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
>

nothrow is already a keyword (which is really inconsistent). I'm not 
sure what it does buy us, and both safe and nothrow are good candidates 
for lib implementation rather than compiler support.


More information about the Digitalmars-d mailing list