On 2013-01-05 19:54, Philippe Sigaud wrote:
Good to know. I tested it with basic values and this fails:
@"hello" int i;
@3 inj j;
Worth a bug report?
No, that's by design. When I added that syntax first but I was asked to
change it to only accept call expressions. Have a look at the grammar:
https://dl.dropbox.com/u/18386187/attribute.html#uda
As a complement, multiple @'s are possible:
@("hello") @(3) int j;
Yes, that's legal and is supposed to be. Have a look at Walters original
announcement:
http://forum.dlang.org/thread/[email protected]
enum EEE = 7;
["hello"] struct SSS { }
[3] { [4][EEE][SSS] int foo; }
With the correct syntax that becomes:
enum EEE = 7;
@("hello") struct SSS { }
@(3) { @(4) @(EEE) @(SSS) int foo; }
Or:
@(3) { @(4) @EEE @SSS int foo; }
And another complement:
struct S {}
@S S s; is possible.
But
@int S s;
is not
That is not supposed to be legal (see above), but this might be:
@(int) S s;
Does that work?
So user-defined types are OK, but not basic types. Looks like a
parsing/grammar problem for me, since attribute tuple sure should be
able to store built-in types.
Another bug report?
I'm not sure.
--
/Jacob Carlborg