Hi,

```d
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!

Reply via email to