On Thursday, 27 July 2017 at 15:40:01 UTC, jmh530 wrote:
On Thursday, 27 July 2017 at 14:58:22 UTC, Atila Neves wrote:


_Why_ it works like that I have no idea.


I thought that the attributes were just using the same behavior as public/private/etc.

Anyway, isn't that the same type of behavior this DIP is suggesting? There is an @nogc module foo; example in the DIP that has a gc function included and doesn't say anything about it being an error.

The DIP has a list of attributes not encompassed, but there are missing attributes from [1]. For instance, the visibility attributes are not encompassed, but that is not mentioned. In this case, they are grouped and have a default (public) and an opposite (private). However, it would break a lot of code to force them to use @. Might be useful to mention why not included.

https://dlang.org/spec/attribute.html

Hmm. With private/package/protected/public/export you can mix and match them as you please:

public:

void foo() {}
void bar() {}
private:
void baz() {}
int a,b;
public int c;

whereas if it were to be encompassed by this DIP that would no longer work. Maybe it should work, perhaps a last attribute wins (assuming previous `@attributes:` come before it in the list)?

Might be useful to mention why not included.

This DIP focuses on function (i.e. @-like attributes), the rest of those attributes are storage classes/visibility classes or parametric in a way that doesn't fit with this DIP (extern(C++, A.B), package(foo) align(N).

Reply via email to