| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| // https://issues.dlang.org/show_bug.cgi?id=9701 | ||
|
|
||
| template AliasSeq(TList...) | ||
| { | ||
| alias AliasSeq = TList; | ||
| } | ||
|
|
||
| enum | ||
| { | ||
| uda4, | ||
| uda5, | ||
| uda6, | ||
| uda8, | ||
| uda9 | ||
| } | ||
|
|
||
| enum Enum | ||
| { | ||
| value0, | ||
| @("uda1") value1, | ||
| @("uda2", "uda3", 42) value2, | ||
| @uda4 value3, | ||
| @uda5 @uda6 value4, | ||
| @("uda7") @uda8 value5, | ||
| @uda9 @("uda10") value6, | ||
| deprecated value7, | ||
| deprecated("message") value8, | ||
| } | ||
|
|
||
| @("uda0") | ||
| enum | ||
| { | ||
| value0, | ||
| @("uda1") value1, | ||
| @("uda2") @("uda3") value2, | ||
| @uda4 value3, | ||
| @uda5 @uda6 value4, | ||
| @("uda7") @uda8 value5, | ||
| @uda9 @("uda10") value6 | ||
| } | ||
|
|
||
| static assert(__traits(getAttributes, Enum.value0).length == 0); | ||
| static assert(__traits(getAttributes, Enum.value1) == AliasSeq!("uda1")); | ||
| static assert(__traits(getAttributes, Enum.value2) == AliasSeq!("uda2", "uda3", 42)); | ||
| static assert(__traits(getAttributes, Enum.value3) == AliasSeq!(uda4)); | ||
| static assert(__traits(getAttributes, Enum.value4) == AliasSeq!(uda5, uda6)); | ||
| static assert(__traits(getAttributes, Enum.value5) == AliasSeq!("uda7", uda8)); | ||
| static assert(__traits(getAttributes, Enum.value6) == AliasSeq!(uda9, "uda10")); | ||
| static assert(__traits(isDeprecated, Enum.value7)); | ||
| static assert(__traits(isDeprecated, Enum.value8)); | ||
|
|
||
| static assert(__traits(getAttributes, value0) == AliasSeq!("uda0")); | ||
| static assert(__traits(getAttributes, value1) == AliasSeq!("uda0", "uda1")); | ||
| static assert(__traits(getAttributes, value2) == AliasSeq!("uda0", "uda2", "uda3")); | ||
| static assert(__traits(getAttributes, value3) == AliasSeq!("uda0", uda4)); | ||
| static assert(__traits(getAttributes, value4) == AliasSeq!("uda0", uda5, uda6)); | ||
| static assert(__traits(getAttributes, value5) == AliasSeq!("uda0", "uda7", uda8)); | ||
| static assert(__traits(getAttributes, value6) == AliasSeq!("uda0", uda9, "uda10")); |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| /* | ||
| TEST_OUTPUT | ||
| --- | ||
| fail_compilation/test9701.d(38): Error: `@safe` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(39): Error: `@system` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(40): Error: `@trusted` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(41): Error: `@nogc` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(42): Error: `pure` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(43): Error: `shared` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(44): Error: `inout` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(45): Error: `immutable` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(46): Error: `const` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(47): Error: `synchronized` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(48): Error: `scope` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(49): Error: `auto` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(50): Error: `ref` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(51): Error: `__gshared` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(52): Error: `final` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(53): Error: `extern` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(54): Error: `export` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(55): Error: `nothrow` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(56): Error: `public` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(57): Error: `private` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(58): Error: `package` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(59): Error: `static` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(60): Error: `static` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(61): Error: `static` is not a valid attribute for enum members | ||
| fail_compilation/test9701.d(62): Error: `static` is not a valid attribute for enum members | ||
| --- | ||
| */ | ||
|
|
||
| // This test exists to verify that parsing of enum member attributes rejects invalid attributes | ||
|
|
||
| // https://issues.dlang.org/show_bug.cgi?id=9701 | ||
|
|
||
| enum Enum | ||
| { | ||
| @safe safe, | ||
| @system system, | ||
| @trusted trusted, | ||
| @nogc nogc, | ||
| pure pure_, | ||
| shared shared_, | ||
| inout inout_, | ||
| immutable immutable_, | ||
| const const_, | ||
| synchronized synchronized_, | ||
| scope scope_, | ||
| auto auto_, | ||
| ref ref_, | ||
| __gshared __gshared_, | ||
| final final_, | ||
| extern extern_, | ||
| export export_, | ||
| nothrow nothrow_, | ||
| public public_, | ||
| private private_, | ||
| package package_, | ||
| static static1, | ||
| @("a") static static2, | ||
| static @("a") static3, | ||
| @("a") static @("b") static3, | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| /* | ||
| REQUIRED_ARGS: -de | ||
| TEST_OUTPUT | ||
| --- | ||
| fail_compilation/test9701b.d(20): Deprecation: enum member `test9701b.Enum.e0` is deprecated | ||
| fail_compilation/test9701b.d(21): Deprecation: enum member `test9701b.Enum.e1` is deprecated - message | ||
| --- | ||
| */ | ||
|
|
||
| // https://issues.dlang.org/show_bug.cgi?id=9701 | ||
|
|
||
| enum Enum | ||
| { | ||
| deprecated e0, | ||
| deprecated("message") e1, | ||
| } | ||
|
|
||
| void main() | ||
| { | ||
| auto value = Enum.e0; | ||
| auto value2 = Enum.e1; | ||
| } |