MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / adjust_assign

Function adjust_assign

3rd/lua-5.4.3/src/lparser.c:470–489  ·  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

468** expressions to 'nvars' values.
469*/
470static void adjust_assign (LexState *ls, int nvars, int nexps, expdesc *e) {
471 FuncState *fs = ls->fs;
472 int needed = nvars - nexps; /* extra values needed */
473 if (hasmultret(e->k)) { /* last expression has multiple returns? */
474 int extra = needed + 1; /* discount last expression itself */
475 if (extra < 0)
476 extra = 0;
477 luaK_setreturns(fs, e, extra); /* last exp. provides the difference */
478 }
479 else {
480 if (e->k != VVOID) /* at least one expression? */
481 luaK_exp2nextreg(fs, e); /* close last expression */
482 if (needed > 0) /* missing values? */
483 luaK_nil(fs, fs->freereg, needed); /* complete with nils */
484 }
485 if (needed > 0)
486 luaK_reserveregs(fs, needed); /* registers for extra values */
487 else /* adding 'needed' is actually a subtraction */
488 fs->freereg += needed; /* remove extra values */
489}
490
491
492#define enterlevel(ls) luaE_incCstack(ls->L)

Callers 3

restassignFunction · 0.85
forlistFunction · 0.85
localstatFunction · 0.85

Calls 4

luaK_setreturnsFunction · 0.85
luaK_exp2nextregFunction · 0.85
luaK_nilFunction · 0.85
luaK_reserveregsFunction · 0.85

Tested by

no test coverage detected