diff --git a/dmd/interpret.c b/dmd/interpret.c index 870c0b3f..7724abf1 100644 --- a/dmd/interpret.c +++ b/dmd/interpret.c @@ -566,13 +566,13 @@ Expression *ReturnStatement::interpret(InterState *istate) } #endif -#if LOG Expression *e = exp->interpret(istate); - printf("e = %p\n", e); + if (e == EXP_CANT_INTERPRET) + return e; + // Convert lvalues into rvalues (See Bugzilla 4825 for rationale) + if (e->op == TOKvar) + e = e->interpret(istate); return e; -#else - return exp->interpret(istate); -#endif } Expression *BreakStatement::interpret(InterState *istate)