MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / adjust_assign

Function adjust_assign

extlibs/lua/src/lparser.c:462–481  ·  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

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

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