On Friday, 20 June 2014 at 19:22:04 UTC, Brian Schott wrote:
http://wiki.dlang.org/DIP64

Attributes in D have two problems:
1. There are too many of them and declarations are getting too verbose
2. New attributes use @ and the old ones do not.

I've created a DIP to address these issues.

@exhumation

So, two years after ?
If attributes are well split into sub categories, we could justify that a sub category will have @ and another not (e.g protection attributes: not @, functions attributes: @).

The list of attributes that's not classified is:

+ static
 extern
+ abstract
+ final
+ override
+ synchronized
+ auto
 scope
+ const
+ immutable
 inout
+ shared
 __gshared
+ nothrow
+ pure
 ref

possible categories:
- function attributes: nothrow, pure
- function member attributes: function attributes + abstract, final, override, static, synchronized , const , shared
- type modifier attributes (+ return type attributes)

function attributes and function member attributes can be replaced by a @ version. function attributes that are also type attributes will also have a new @version but obsiously the not-@ version will always remain for <attribute>(T).

type modifier attributes won't have a @version because otherwise the goal of DIP is not reach (fix inconsistence for const for example which can have up to 3 different meaning now).

This would reduce "the hell" a bit.

---
rb.c...@nowhere.fi

Reply via email to