Exemplo n.º 1
0
static void adjust_assign(LexState *ls, int nvars, int nexps, expdesc *e)
{
    FuncState *fs   = ls->fs;
    int       extra = nvars - nexps;

    if (hasmultret(e->k))
    {
        extra++; /* includes call itself */
        if (extra < 0)
            extra = 0;

        luaK_setreturns(fs, e, extra); /* last exp. provides the difference */
        if (extra > 1)
            luaK_reserveregs(fs, extra - 1);
    }
    else
    {
        if (e->k != VVOID)
            luaK_exp2nextreg(fs, e);             /* close last expression */

        if (extra > 0)
        {
            int reg = fs->freereg;
            luaK_reserveregs(fs, extra);
            luaK_nil(fs, reg, extra);
        }
    }
}
Exemplo n.º 2
0
Arquivo: lcode.cpp Projeto: swizl/lua
void FuncState::luaK_setmultret(expdesc *e)
{
	luaK_setreturns(e, LUA_MULTRET);
}