On Tuesday, 24 July 2018 at 04:43:33 UTC, Guillaume Lathoud wrote:
Hello,
__traits and std.traits already offer access to function
information like input parameters, e.g. in std.traits:
ParameterIdentifierTuple ParameterStorageClassTuple
Even if that might sound strange, is there a compile time
access to the body of the function, e.g. as a code string, or
at least to the filename where it was declared?
I have not found a direct "string" access, but I found these:
https://dlang.org/phobos/std_traits.html#moduleName
https://dlang.org/phobos/std_traits.html#packageName
...and I am not sure how to proceed from here to get the code
as a string that declared the function. Context: I have some
compile-time ideas in mind (code transformation).
Best regards,
Guillaume Lathoud
If all you need is the string you can write a template function
that imports the file and searches for the function and returns
it's body.
It's not very robust but it can work for some cases. D really
should allow one to get the function body in D, possibly in a
type safe way(such as each line is parsed properly and return
type info about what the line contains.