You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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; }}```
The text was updated successfully, but these errors were encountered:
issues.dlang (@jmdavis) commented on 2024-04-05T22:27:01Z
Yeah, __traits(getOverloads, ...) won't give you templated overloads unless you tell it to - and in the general case, it really isn't going to work well to get attributes from a templated function because of attribute inference. However, for UDAs, they should be there regardless.
johanengelen reported this on 2024-04-03T23:35:14Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=24480
CC List
Description
The text was updated successfully, but these errors were encountered: