[Issue 18990] New: Failing class instantiations ignored in UDAs

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jun 15 07:42:17 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18990

          Issue ID: 18990
           Summary: Failing class instantiations ignored in UDAs
           Product: D
           Version: D2
          Hardware: x86
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: simen.kjaras at gmail.com

This compiles without error:


struct Attr
{
    A h;
}

@Attr(new A(3)) // Line 6
class A {}

static assert(!__traits(compiles, new A(3)));


Clearly, line 6 should fail, since new A(3) doesn't compile elsewhere.

This issue seems to cause problem with std.traits.getSymbolsByUDA:


import std.traits;
static assert(!getSymbolsByUDA!(mixin(__MODULE__), Attr).length);
static assert(hasUDA!(A, Attr));


clearly, if hasUDA is true, then getSymbolsByUDA should return that symbol, but
it doesn't. This could be a separate issue, but I'm not sure.

--


More information about the Digitalmars-d-bugs mailing list