Get Function Body
Stefan Koch via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jun 30 09:43:33 PDT 2017
On Friday, 30 June 2017 at 16:38:45 UTC, bauss wrote:
> Is there a way to retrieve the body of a function as a string?
>
> Scenario.
>
> I want to pass a function to a mixin template and just mixin
> the body of the function.
>
> Ex.
>
> mixin template Foo(alias fun) {
> void bar() {
> mixin(getBodyOfFun(fun));
> }
> }
>
> I'm aware that I can pass a string like mixin Foo!"a > b" but I
> would really like to avoid that.
>
> I also can't just call "fun" as normal, unless it can be forced
> to be inline within the mixin template. The reason is if I
> mixin two mixin templates with the same function passed it must
> exist as two different function bodies executed, even tho they
> do the same.
>
> Which means the following must have two "different" baz and not
> the actual baz.
>
> void baz() { ... }
>
> mixin Foo!baz;
> mixin Foo!baz;
>
> I don't know if it'll be possible without some sort of
> "parsing" the function or even without "string function bodies".
You need to function body as a string.
There is no way of retriving a functionBodyString from the
compiler.
And I suspect it would be a bad idea to be able to do so.
Since the compiler may mutate the body while
processing/optimizing.
More information about the Digitalmars-d-learn
mailing list