diff options
Diffstat (limited to 'lparser.c')
| -rw-r--r-- | lparser.c | 6 |
1 files changed, 3 insertions, 3 deletions
| @@ -304,7 +304,7 @@ static void check_readonly (LexState *ls, expdesc *e) { | |||
| 304 | break; | 304 | break; |
| 305 | } | 305 | } |
| 306 | case VVARGIND: { | 306 | case VVARGIND: { |
| 307 | fs->f->flag |= PF_VATAB; /* function will need a vararg table */ | 307 | needvatab(fs->f); /* function will need a vararg table */ |
| 308 | e->k = VINDEXED; | 308 | e->k = VINDEXED; |
| 309 | } /* FALLTHROUGH */ | 309 | } /* FALLTHROUGH */ |
| 310 | case VINDEXUP: case VINDEXSTR: case VINDEXED: { /* global variable */ | 310 | case VINDEXUP: case VINDEXSTR: case VINDEXED: { /* global variable */ |
| @@ -1057,7 +1057,7 @@ static void constructor (LexState *ls, expdesc *t) { | |||
| 1057 | 1057 | ||
| 1058 | 1058 | ||
| 1059 | static void setvararg (FuncState *fs) { | 1059 | static void setvararg (FuncState *fs) { |
| 1060 | fs->f->flag |= PF_ISVARARG; | 1060 | fs->f->flag |= PF_VAHID; /* by default, use hidden vararg arguments */ |
| 1061 | luaK_codeABC(fs, OP_VARARGPREP, 0, 0, 0); | 1061 | luaK_codeABC(fs, OP_VARARGPREP, 0, 0, 0); |
| 1062 | } | 1062 | } |
| 1063 | 1063 | ||
| @@ -1283,7 +1283,7 @@ static void simpleexp (LexState *ls, expdesc *v) { | |||
| 1283 | } | 1283 | } |
| 1284 | case TK_DOTS: { /* vararg */ | 1284 | case TK_DOTS: { /* vararg */ |
| 1285 | FuncState *fs = ls->fs; | 1285 | FuncState *fs = ls->fs; |
| 1286 | check_condition(ls, fs->f->flag & PF_ISVARARG, | 1286 | check_condition(ls, isvararg(fs->f), |
| 1287 | "cannot use '...' outside a vararg function"); | 1287 | "cannot use '...' outside a vararg function"); |
| 1288 | init_exp(v, VVARARG, luaK_codeABC(fs, OP_VARARG, 0, fs->f->numparams, 1)); | 1288 | init_exp(v, VVARARG, luaK_codeABC(fs, OP_VARARG, 0, fs->f->numparams, 1)); |
| 1289 | break; | 1289 | break; |
