Hi,
import std;
void main() {
int val = 4;
enum prog = q{
(){ val += 1; return val; }()
};
//mixin(prog); //
auto dummy = mixin(prog); //Must capture the return value, otherwise it hallucinates EOF.
writeln(val);
}
When uncommenting mixin(prog);
It gives
Error: found `End of File` when expecting `;` following expression
expression: `()
{
val += 1;
return val;
}
()`
It happens only when NOT capturing the result of the mixed in evaluated lambda function.
I've noticed this since LDC 1.41
Is this a feature or a bug? :D
Is there a way to make this processing_and_optional_returning thing better?
Use case: The purpose of this is that I can put knobs and sliders into my IDE, nested in the source code text that work on a value reference: It synchronizes the value between the running program and the IDE. Underneath the slider there is a mixin() expression. The weird problem only happens when I DON'T capture the result of that mixin() expression. Sometimes I put a value display around the slider, that reads its value, but sometimes that's not needed. Now in that latter case I get a scary End Of File error.
Note: It doesn't matter it I use lambda or a normal function. The error is triggered when I don't capture a return value on the membrane of a string mixin() expr.
Thank You in advance!