From 9ced7e2bc0ca58bb5de3e1763bded55ba9a540bf Mon Sep 17 00:00:00 2001 From: Dibyendu Majumdar Date: Mon, 15 Feb 2021 00:01:28 +0000 Subject: [PATCH] issue #210 bug in recognizing the type change when an expression of VINDEXED type gets resolved --- src/lcode.c | 2 +- tests/language/ravi_tests1.ravi | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lcode.c b/src/lcode.c index 8c3565d..a0abb2a 100644 --- a/src/lcode.c +++ b/src/lcode.c @@ -1266,8 +1266,8 @@ static int constfolding (FuncState *fs, int op, expdesc *e1, ** Expression to produce final result will be encoded in 'e'. */ static void codeunexpval (FuncState *fs, OpCode op, expdesc *e, int line) { - ravitype_t e_type = e->ravi_type; int r = luaK_exp2anyreg(fs, e); /* opcodes operate only on registers */ + ravitype_t e_type = e->ravi_type; freeexp(fs, e); if (op == OP_BNOT) { if (e->ravi_type == RAVI_TNUMINT) diff --git a/tests/language/ravi_tests1.ravi b/tests/language/ravi_tests1.ravi index e03c53d..0512729 100644 --- a/tests/language/ravi_tests1.ravi +++ b/tests/language/ravi_tests1.ravi @@ -1811,6 +1811,14 @@ end check(x, 'TOIARRAY', 'IARRAY_GET', 'LEN', 'ADD', 'RETURN', 'RETURN') print 'Test 85 OK' +-- Test that #() applied to non integer type produces any type +-- issue #210 +function x(x:integer[]) + return #x[1]+1 +end +check(x, 'TOIARRAY', 'IARRAY_GET', 'LEN', 'ADD', 'RETURN', 'RETURN') +print 'Test 86 OK' + for k,v in pairs(opcodes_coverage) do