MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / parlist

Function parlist

Source/Misc/lua/src/lua.c:8119–8149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8117
8118
8119static void parlist (LexState *ls) {
8120/* parlist -> [ param { `,' param } ] */
8121FuncState *fs = ls->fs;
8122Proto *f = fs->f;
8123int nparams = 0;
8124f->is_vararg = 0;
8125if (ls->t.token != ')') { /* is `parlist' not empty? */
8126do {
8127switch (ls->t.token) {
8128case TK_NAME: { /* param -> NAME */
8129new_localvar(ls, str_checkname(ls), nparams++);
8130break;
8131}
8132case TK_DOTS: { /* param -> `...' */
8133luaX_next(ls);
8134#if defined(LUA_COMPAT_VARARG)
8135/* use `arg' as default name */
8136new_localvarliteral(ls, "arg", nparams++);
8137f->is_vararg = VARARG_HASARG | VARARG_NEEDSARG;
8138#endif
8139f->is_vararg |= VARARG_ISVARARG;
8140break;
8141}
8142default: luaX_syntaxerror(ls, "<name> or " LUA_QL("...") " expected");
8143}
8144} while (!f->is_vararg && testnext(ls, ','));
8145}
8146adjustlocalvars(ls, nparams);
8147f->numparams = cast_byte(fs->nactvar - (f->is_vararg & VARARG_HASARG));
8148luaK_reserveregs(fs, fs->nactvar); /* reserve register for parameters */
8149}
8150
8151
8152static void body (LexState *ls, expdesc *e, int needself, int line) {

Callers 1

bodyFunction · 0.85

Calls 7

new_localvarFunction · 0.85
str_checknameFunction · 0.85
luaX_nextFunction · 0.85
luaX_syntaxerrorFunction · 0.85
testnextFunction · 0.85
adjustlocalvarsFunction · 0.85
luaK_reserveregsFunction · 0.85

Tested by

no test coverage detected