Suggestion for a new trait: __traits(getCaptures,...)

Zoadian no at no.no
Tue Oct 22 14:26:49 UTC 2019


Hello!

I tried to implement a reactivity pattern similar to vue.js and 
ran into the problem that it currently is not possible (correct 
me if I am wrong) to find out which variables are implicitly 
captured or accessed in lambdas/member functions.
Would it be possible to add this to D? `Would it require a DIP?

Example how i would imagine it:
```
struct S{ int b; }
int a;
S s;

auto fun = (){ return a + s.b; }

alias vars = __traits(getCaptures, fun);

assert_alias(vars[0] == a, vars[1] == s.b);
```

I have a quick and dirty implementation here (it's not good, just 
POC): 
https://github.com/Zoadian/dmd/commit/5a4f2f2705d491aa4ce0ae2ea7721f9340cb3d7f

Greetings
Zoadian


More information about the Digitalmars-d mailing list