add types in lua parser expressions

Dibyendu Majumdar 9 years ago
parent 8cf1db7ffa
commit e164f146ea

@ -868,12 +868,12 @@ static int localvar_explist(LexState *ls, expdesc *v, int *vars, int nvars) {
int n = 1; /* at least one expression */
expr(ls, v);
if (nvars && vars[0] != LUA_TNONE && v->ravi_tt != vars[0])
luaX_syntaxerror(ls, "invalid assignment type");
luaX_syntaxerror(ls, "invalid local assignment");
while (testnext(ls, ',')) {
luaK_exp2nextreg(ls->fs, v);
expr(ls, v);
if (nvars > n && vars[n] != LUA_TNONE && v->ravi_tt != vars[n])
luaX_syntaxerror(ls, "invalid assignment type");
luaX_syntaxerror(ls, "invalid local assignment");
n++;
}
return n;

@ -514,6 +514,7 @@ int main(const char *argv[])
failures += test_luacomp1("local b:int = 6; local i:int = 5+b; return i");
failures += test_luacomp1("local f = function(); end");
failures += test_luacomp1("local b:int = 6; b = nil; return i") == 1 ? 0 : 1; /* should fail */
failures += test_luacomp1("local f = function(); local function y() ; end; end");
printf("Number of opcodes %d\n", NUM_OPCODES);

Loading…
Cancel
Save