diff options
-rw-r--r-- | src/lcode.js | 4 | ||||
-rw-r--r-- | src/lundump.js | 2 | ||||
-rw-r--r-- | tests/test-suite/events.js | 7 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/lcode.js b/src/lcode.js index 1235fe4..2887e6d 100644 --- a/src/lcode.js +++ b/src/lcode.js @@ -799,8 +799,8 @@ const luaK_exp2RK = function(fs, e) { let vk = false; luaK_exp2val(fs, e); switch (e.k) { /* move constants to 'k' */ - case ek.VTRUE: e.u.info = boolK(fs, 1); vk = true; break; - case ek.VFALSE: e.u.info = boolK(fs, 0); vk = true; break; + case ek.VTRUE: e.u.info = boolK(fs, true); vk = true; break; + case ek.VFALSE: e.u.info = boolK(fs, false); vk = true; break; case ek.VNIL: e.u.info = nilK(fs); vk = true; break; case ek.VKINT: e.u.info = luaK_intK(fs, e.u.ival); vk = true; break; case ek.VKFLT: e.u.info = luaK_numberK(fs, e.u.nval); vk = true; break; diff --git a/src/lundump.js b/src/lundump.js index 5ea459e..3c35710 100644 --- a/src/lundump.js +++ b/src/lundump.js @@ -158,7 +158,7 @@ class BytecodeParser { f.k.push(new lobject.TValue(defs.CT.LUA_TNIL, null)); break; case defs.CT.LUA_TBOOLEAN: - f.k.push(new lobject.TValue(defs.CT.LUA_TBOOLEAN, this.readByte())); + f.k.push(new lobject.TValue(defs.CT.LUA_TBOOLEAN, this.readByte() !== 0)); break; case defs.CT.LUA_TNUMFLT: f.k.push(new lobject.TValue(defs.CT.LUA_TNUMFLT, this.readNumber())); diff --git a/tests/test-suite/events.js b/tests/test-suite/events.js index 04b4b1a..090b104 100644 --- a/tests/test-suite/events.js +++ b/tests/test-suite/events.js @@ -450,6 +450,13 @@ test("[test-suite] events: concat", function (t) { A = true assert(c..d == 'cd') assert(0 .."a".."b"..c..d.."e".."f"..(5+3).."g" == "0abcdef8g") + + A = false + assert((c..d..c..d).val == 'cdcd') + x = c..d + assert(getmetatable(x) == t and x.val == 'cd') + x = 0 .."a".."b"..c..d.."e".."f".."g" + assert(x.val == "0abcdefg") `, L; t.plan(2); |