MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / adjust_assign

Function adjust_assign

lib/lua/src/lparser.c:482–501  ·  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

480** expressions to 'nvars' values.
481*/
482static void adjust_assign (LexState *ls, int nvars, int nexps, expdesc *e) {
483 FuncState *fs = ls->fs;
484 int needed = nvars - nexps; /* extra values needed */
485 if (hasmultret(e->k)) { /* last expression has multiple returns? */
486 int extra = needed + 1; /* discount last expression itself */
487 if (extra < 0)
488 extra = 0;
489 luaK_setreturns(fs, e, extra); /* last exp. provides the difference */
490 }
491 else {
492 if (e->k != VVOID) /* at least one expression? */
493 luaK_exp2nextreg(fs, e); /* close last expression */
494 if (needed > 0) /* missing values? */
495 luaK_nil(fs, fs->freereg, needed); /* complete with nils */
496 }
497 if (needed > 0)
498 luaK_reserveregs(fs, needed); /* registers for extra values */
499 else /* adding 'needed' is actually a subtraction */
500 fs->freereg += needed; /* remove extra values */
501}
502
503
504#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