MCPcopy Create free account
hub / github.com/EmmyLua/EmmyLuaDebugger / adjust_assign

Function adjust_assign

third-party/lua-5.5.0/src/lparser.c:547–567  ·  view source on GitHub ↗

** Adjust the number of results from an expression list 'e' with 'nexps' ** expressions to 'nvars' values. */

Source from the content-addressed store, hash-verified

545** expressions to 'nvars' values.
546*/
547static void adjust_assign (LexState *ls, int nvars, int nexps, expdesc *e) {
548 FuncState *fs = ls->fs;
549 int needed = nvars - nexps; /* extra values needed */
550 luaK_checkstack(fs, needed);
551 if (hasmultret(e->k)) { /* last expression has multiple returns? */
552 int extra = needed + 1; /* discount last expression itself */
553 if (extra < 0)
554 extra = 0;
555 luaK_setreturns(fs, e, extra); /* last exp. provides the difference */
556 }
557 else {
558 if (e->k != VVOID) /* at least one expression? */
559 luaK_exp2nextreg(fs, e); /* close last expression */
560 if (needed > 0) /* missing values? */
561 luaK_nil(fs, fs->freereg, needed); /* complete with nils */
562 }
563 if (needed > 0)
564 luaK_reserveregs(fs, needed); /* registers for extra values */
565 else /* adding 'needed' is actually a subtraction */
566 fs->freereg = cast_byte(fs->freereg + needed); /* remove extra values */
567}
568
569
570#define enterlevel(ls) luaE_incCstack(ls->L)

Callers 4

restassignFunction · 0.70
forlistFunction · 0.70
localstatFunction · 0.70
initglobalFunction · 0.70

Calls 5

luaK_checkstackFunction · 0.70
luaK_setreturnsFunction · 0.70
luaK_exp2nextregFunction · 0.70
luaK_nilFunction · 0.70
luaK_reserveregsFunction · 0.70

Tested by

no test coverage detected