digitalmars.D.bugs - [Issue 24480] New: getSymbolsByUDA ignores template functions
- d-bugmail puremagic.com (44/44) Apr 03 https://issues.dlang.org/show_bug.cgi?id=24480
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; } } ``` --
Apr 03