December 08, 2022 [Issue 23544] New: Allow enum types be defined with semicolons | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=23544 Issue ID: 23544 Summary: Allow enum types be defined with semicolons Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: qs.il.paperinik@gmail.com Currently, an enum type is defined with this syntax: ```d enum Identifier { Value1, Value2, Value3 } ``` (Note: A trailing comma is allowed, but not required.) It would be nice to allow semicolon syntax as well: ```d enum Identifier { Value1; Value2; Value3; } ``` (Note: A semicolon for the last value is required.) It would make meta-programming easier. A `static foreach` cannot generate a comma-separated list, but it can generate a list of declarations. Otherwise, one has to use string mixins which – apart from being hard to read – have the limitation that naming symbols that are inaccessible due to visibility attributes (private, usually) can be fed into and used by a template via an alias, but using the name is a non-starter. (This is to prove that it solves an issue actually present in the language.) Grammar changes: ```diff EnumBody: { EnumMembers } ; EnumMembers: + EnumCommaMembers + EnumSemicolonMembers + + EnumCommaMembers: EnumMember EnumMember , EnumMember , EnumMembers + EnumSemicolonMembers: + EnumMember ; + EnumMember ; EnumSemicolonMembers AnonymousEnumDeclaration: enum : EnumBaseType { EnumMembers } enum { EnumMembers } enum { AnonymousEnumMembers } AnonymousEnumMembers: + AnonymousCommaEnumMembers + AnonymousSemicolonEnumMembers + AnonymousCommaEnumMembers AnonymousEnumMember AnonymousEnumMember , AnonymousEnumMember , AnonymousEnumMembers + AnonymousSemicolonEnumMembers: + AnonymousEnumMember ; + AnonymousEnumMember ; AnonymousSemicolonEnumMembers ``` -- |
Copyright © 1999-2021 by the D Language Foundation