On Thursday, 15 September 2016 at 00:15:42 UTC, jsako wrote:
I was making a quick mocking infrastructure for internal mocks
so I wouldn't have to pass in objects to constructors all the
time and came up with this:
[...]
This works great as long as there is only one mock object. I
thought about using string mixins to generate the properties on
a per-variable basis, but the problem is that I can't figure
out how to get the string of the variable name from the aliased
template mixin parameter. Is there a way to do this?
If not, I'll have to pass in the strings of the variables
seperately (as in: mixin internalMockRig!(thing, "thing",
testThing, "testThing", testThingMock, "testThingMock"); ), but
that seems inelegant (and a bit error prone).
You mean, the literal string name of the original symbol you
passed as an alias? If so then you want the .stringof property.
void main () {
int first;
bool second;
string third;
mixin Foo!(first, second, third);
}
mixin template Foo(alias abc, alias def, alias ghi)
{
static assert(abc.stringof == "first");
static assert(def.stringof == "second");
static assert(ghi.stringof == "third");
}