www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 20464] New: builtin types could be usable as UDA, without

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