Don <> changed:

           What    |Removed                     |Added
           Keywords|                            |patch

--- Comment #3 from Don <> 2010-09-27 13:26:04 PDT ---
This was caused by the improvements to CommaExp::interpret, making things like
(int x=3, x); into an lvalue, which allows struct constructors to work in CTFE.
But inlining can also create peculiar comma expressions. We need to make sure
that non-ref returns return rvalues, not lvalues.

PATCH interpret.c, ReturnStatement::interpret(), line 566.
--- old ----
#if LOG
    Expression *e = exp->interpret(istate);
    printf("e = %p\n", e);
    return e;
    return exp->interpret(istate);
--- new ---
    Expression *e = exp->interpret(istate);
    if (e == EXP_CANT_INTERPRET)
        return e;
    // Convert lvalues into rvalues
    if (e->op == TOKvar)
        e = e->interpret(istate);
    return e;

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to