add type info to local variables

Dibyendu Majumdar 9 years ago
parent 6741dbe852
commit 1cfb88713a

@ -593,7 +593,8 @@ void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) {
switch (var->k) {
case VLOCAL: {
if (var->ravi_tt != LUA_TNONE && var->ravi_tt != ex->ravi_tt)
luaX_syntaxerror(fs->ls, "invalid assignment type");
luaX_syntaxerror(fs->ls, luaO_pushfstring(fs->ls->L, "Invalid assignment of type: var type %d, expression type %d",
var->ravi_tt, ex->ravi_tt));
freeexp(fs, ex);
exp2reg(fs, ex, var->u.info);
return;

@ -510,7 +510,8 @@ int main(const char *argv[])
failures += test_return1();
failures += test_unmf();
failures += test_binintop(OP_RAVI_ADDIIRR, 6, 7, 13);
failures += test_binintop(OP_RAVI_MULIIRR, 6, 7, 42);
failures += test_binintop(OP_RAVI_MULIIRR, 6, 7, 42);
failures += test_luacomp1("f = nil; local f; function f(a); end");
failures += test_luacomp1("local max, min = 0x7fffffff, -0x80000000; assert(string.format(\"%d\", min) == \"-2147483648\"); max, min = 0x7fffffffffffffff, -0x8000000000000000; if max > 2.0 ^ 53 then; end;");
failures += test_luacomp1("local function F (m); local function round(m); m = m + 0.04999; return format(\"%.1f\", m);end; end");
failures += test_luacomp1("local b:int = 6; local i:int = 5+b; return i");

Loading…
Cancel
Save