July 29, 2014 [Issue 13224] New: Error: first argument is not a symbol | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=13224 Issue ID: 13224 Summary: Error: first argument is not a symbol Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: regression Priority: P1 Component: DMD Assignee: nobody@puremagic.com Reporter: dragoscarp@gmail.com Following code minimized from an application unitest using dunit doesn't compile with 2.066.0-b6 (2.065 was ok): FooTest.d(30): Error: first argument is not a symbol FooTest.d(36): Error: template instance FooTest.FooTest.UnitTest!()._annotations!(FooTest, Ignore, "Node", "toString", "toHash", "opCmp", "opEquals", "Monitor", "factory") error instantiating FooTest.d(32): instantiated from here: _annotations!(FooTest, Ignore, "_annotations", "Node", "toString", "toHash", "opCmp", "opEquals", "Monitor", "factory") FooTest.d(16): instantiated from here: _annotations!(FooTest, Ignore, "__ctor", "_annotations", "Node", "toString", "toHash", "opCmp", "opEquals", "Monitor", "factory") =================================== import std.typetuple; class Document { alias NodeImpl* Node; struct NodeImpl { } } template UnitTest() { this() { alias TypeTuple!(__traits(allMembers, typeof(this))) allMembers; _annotations!(typeof(this), Ignore, allMembers).dup; } template _annotations(T, attribute, names...) { static if (names.length == 0) { immutable(string[]) _annotations = []; } else { static if (__traits(compiles, mixin("(new " ~ T.stringof ~ "())." ~ names[0] ~ "()"))) { alias TypeTuple!(__traits(getMember, T, names[0])) member; TypeTuple!(__traits(getAttributes, member)) attributes; immutable(string[]) _annotations = _annotations!(T, attribute, names[1 .. $]); } else { immutable(string[]) _annotations = _annotations!(T, attribute, names[1 .. $]); } } } } struct Ignore { } class FooTest { mixin UnitTest; alias Node = Document.Node; } ==================================================================== -- |
Copyright © 1999-2021 by the D Language Foundation