digitalmars.D.bugs - [Issue 20464] New: builtin types could be usable as UDA, without
- d-bugmail puremagic.com (40/40) Dec 22 2019 https://issues.dlang.org/show_bug.cgi?id=20464
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))`. --
Dec 22 2019