d: Merge upstream dmd 568496d5b, druntime 178c44ff, phobos 574bf883b.
[official-gcc.git] / gcc / testsuite / gdc.test / compilable / test20835.d
blobd1c01397f5322adcb87d0feb1d99dd752f344f61
1 // EXTRA_FILES: imports/test19344.d
3 // https://issues.dlang.org/show_bug.cgi?id=20835
5 template T(E) {
6 alias T = __traits(getAttributes, E.a);
9 void main()
11 class C {}
12 enum E {
13 @C a
16 alias b = T!E;
19 // https://issues.dlang.org/show_bug.cgi?id=19344
21 import imports.test19344;
23 struct Struct {
24 int value;
27 enum Enum {
28 @Struct(42) first,
31 static assert(getUDAs!(Enum.first, Struct)[0] == Struct(42));
32 static assert(__traits(getAttributes, Enum.first)[0] == Struct(42));
34 // https://issues.dlang.org/show_bug.cgi?id=21122
36 void test21122()
38 enum A;
39 enum E { @A a }
41 static assert(is(getAllUDAs!(E.a)[0] == A));
44 alias getAllUDAs(A...) = __traits(getAttributes, A);
46 // https://issues.dlang.org/show_bug.cgi?id=21352
48 @("aaa") enum Hoge {
49 @("bbb") foo, // tuple("aaa", "bbb") -> should be only tuple("bbb")
50 bar, // tuple()
52 @("aaa") struct Fuga {
53 @("bbb") int foo; // tuple("bbb")
54 int bar; // tuple()
56 static assert([__traits(getAttributes, Hoge.foo)] == ["bbb"]); //NG -> fixed
57 static assert([__traits(getAttributes, Hoge.bar)] == []);
58 static assert([__traits(getAttributes, Fuga.foo)] == ["bbb"]);
59 static assert([__traits(getAttributes, Fuga.bar)] == []);