mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 05:00:16 +03:00

* [dmd/parse] Refactor enum declaration Tip: set ignore whitespace for diff. Remove prevTOK. Only use token loop for attributes. "expected identifier after type" introduced in previous pull replaced with "no identifier for declarator" for consistency. Non-@ token "not a valid attribute" error replaced with "expected identifier". "type only allowed if anonymous enum and no enum type" error was never hit, this triggered "not a valid attribute" error instead. No need to check `terror` as type will be null anyway. "assignment must be preceded by an identifier" has been superceded by other errors. Make "enum declaration is invalid" error more informative. * Add test for lone attribute * Detect typed member with named enum for better error * Add test for type error * Avoid infinite loop * Move 2 new tests to separate file; test `T @a b`
23 lines
579 B
D
23 lines
579 B
D
/*
|
|
TEST_OUTPUT:
|
|
---
|
|
fail_compilation/enum_member.d(14): Error: basic type expected, not `for`
|
|
fail_compilation/enum_member.d(15): Error: no identifier for declarator `T`
|
|
fail_compilation/enum_member.d(15): Error: found `@` when expecting `,`
|
|
fail_compilation/enum_member.d(22): Error: found `}` when expecting `identifier`
|
|
fail_compilation/enum_member.d(24): Error: found `End of File` when expecting `,`
|
|
fail_compilation/enum_member.d(24): Error: premature end of file
|
|
---
|
|
*/
|
|
enum
|
|
{
|
|
for,
|
|
T @a b = 1
|
|
}
|
|
// See also: fail10285.d
|
|
|
|
enum E
|
|
{
|
|
@a
|
|
}
|
|
// See also: fail20538.d
|