Bug 22291 – __traits(arguments) to return a tuple of the function arguments

Status
RESOLVED
Resolution
FIXED
Severity
enhancement
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2021-09-09T00:55:09Z
Last change time
2022-07-04T16:56:00Z
Keywords
industry, pull
Assigned to
No Owner
Creator
Adam D. Ruppe

Comments

Comment #0 by destructionator — 2021-09-09T00:55:09Z
http://dpldocs.info/this-week-in-d/Blog.Posted_2021_07_26.html#on-my-wish-list I often wish there was a tuple of the function's arguments available. I call it __arguments. D already has something similar for the D-style variadics, but I'd like to see it for all functions. --- void foo(int a, int b) { auto c = __arguments[0]; // same as int c = a; writeln(__arguments); // same as writeln(a, b); } --- It is such a little thing but it would make that kind of forwarding a lot easier. I also wouldn't mind a __this_function thing, but that's fairly easy to hack around with __traits(parent, {}). And yah, you could kinda do some weird mixin thing with traits(parent) and pulling out the parameters tuple and mixing in the names. But much better to just have __arguments that just works.
Comment #1 by dlang-bot — 2021-09-13T11:34:36Z
@maxhaton created dlang/dmd pull request #13071 "Fix Issue 22291 - Implement __traits(arguments)" fixing this issue: - Fix Issue 22291 - Implement __traits(arguments) https://github.com/dlang/dmd/pull/13071
Comment #2 by dlang-bot — 2022-01-21T14:37:31Z
dlang/dmd pull request #13071 "Fix Issue 22291 - Implement __traits(parameters)" was merged into master: - 7798569c3c80a22b9a7013209d25a1b16a72c7e0 by Max Haughton: Fix Issue 22291 - Implement __traits(arguments) https://github.com/dlang/dmd/pull/13071
Comment #3 by andrej.mitrovich — 2022-07-04T16:56:00Z
*** Issue 20266 has been marked as a duplicate of this issue. ***