December 22, 2019 [Issue 20464] New: builtin types could be usable as UDA, without being enclosed in parens | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=20464 Issue ID: 20464 Summary: builtin types could be usable as UDA, without being enclosed in parens Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: b2.temp@gmx.com Minor enhancement suggestion --- template BasicTypeUDA(T) { @T(0) int v1; @int(0) int v2; // not accepted by the parser but this is the same as v1 attribute when `T` is an `int`. } alias WithInt = BasicTypeUDA!int; --- possible by simplifying the current rule for UDA this way: UserDefinedAttribute: @ ( ArgumentList ) - @ Identifier - @ Identifier ( ArgumentListopt ) - @ TemplateInstance - @ TemplateInstance ( ArgumentListopt ) + @ BasicType + @ BasicType ( ArgumentListopt ) since BasicType covers Identifier, TemplateInstance, builtin types and even more. (https://dlang.org/spec/declaration.html#BasicType) The @ guarantees that parsing will not become ambiguous. This would simplify a bit the language by generalizing the use of the construction syntax, although we all know that `@Type(args)` is just the short for `@(Type(args))`. -- |
Copyright © 1999-2021 by the D Language Foundation