April 03 [Issue 24480] New: getSymbolsByUDA ignores template functions | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=24480 Issue ID: 24480 Summary: getSymbolsByUDA ignores template functions Product: D Version: D2 Hardware: All OS: Mac OS X Status: NEW Severity: normal Priority: P1 Component: phobos Assignee: nobody@puremagic.com Reporter: johanengelen@weka.io Testcase: ``` struct SomeUDA {} struct S { @SomeUDA S opBinary(string op: "-")(S rhs) const pure nothrow @nogc { return rhs; } S opBinary(string op: "*")(S dur) const pure nothrow @nogc { return dur; } } import std.traits; pragma(msg, getSymbolsByUDA!(S, SomeUDA)); ``` This prints "()", i.e. does not return the template function (https://d.godbolt.org/z/Th86qvMGM). Seems to be fixed by adding `true` on this line https://github.com/dlang/phobos/blob/77adcadf7961dbe1177aa79be381311404a81d46/std/traits.d#L9009 (similar to the `if` condition three lines above it). However, then this slightly modified testcase still fails: ``` struct S { S opBinary(string op: "-")(S rhs) const pure nothrow @nogc { return rhs; } @SomeUDA S opBinary(string op: "*")(S dur) const pure nothrow @nogc { return dur; } } ``` -- |
Copyright © 1999-2021 by the D Language Foundation