DIP 1012--Attributes--Preliminary Review Round 1

Nick Treleaven via Digitalmars-d digitalmars-d at puremagic.com
Fri Jul 28 04:45:21 PDT 2017


On Friday, 28 July 2017 at 01:50:24 UTC, Jonathan M Davis wrote:
> Should public have @ on it? Should static have @ on it? What 
> about scope, const, or shared?

If they are storage classes, they shouldn't have @. If they are 
statement or expression keywords, they shouldn't have @. Things 
like that are introduced with leading underscores: __traits, 
__gshared.

public etc could be @ attributes, but I see no reason to change 
them. This inconsistency can be explained by just saying 
visibility is special. (That said I wouldn't complain if they 
were changed too). Common keywords in other languages can help 
justify keeping those keywords in D.

> it looks like the DIP is talking about what the default 
> attributes in general are. It's one thing to slap a default set 
> of attributes at the top of a module and then negate them later 
> in the module

This is one part of the DIP I like - `@safe module foo;`. AIUI 
this would enable a @safe default that doesn't stop code such as 
templates being inferred as @system. This is not currently 
possible in D. I know Walter has talked about inferring 
attributes for all function bodies - in that case the DIP seems a 
bit less useful, but could still set the default for unittests, 
module ctors/dtors and main().


More information about the Digitalmars-d mailing list