From e111f5cb7a21455df2c62eb65cd7b38aac0d834c Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Tue, 21 Feb 2017 09:55:56 +0100 Subject: luaG_concaterror, luaG_opinterror, luaG_tointerror --- src/ltm.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/ltm.js') diff --git a/src/ltm.js b/src/ltm.js index f163f44..6186066 100644 --- a/src/ltm.js +++ b/src/ltm.js @@ -9,6 +9,8 @@ const Table = lobject.Table; const ldo = require('./ldo.js'); const lstate = require('./lstate.js'); const lua = require('./lua.js'); +const ldebug = require('./ldebug.js'); +const lvm = require('./lvm.js'); const CT = lua.constant_types; @@ -114,7 +116,21 @@ const luaT_callbinTM = function(L, p1, p2, res, event) { const luaT_trybinTM = function(L, p1, p2, res, event) { if (!luaT_callbinTM(L, p1, p2, res, event)) { - throw new Error("TM error"); // TODO: luaG_error + switch (event) { + case TMS.TM_CONCAT: + ldebug.luaG_concaterror(L, p1, p2); + case TMS.TM_BAND: case TMS.TM_BOR: case TMS.TM_BXOR: + case TMS.TM_SHL: case TMS.TM_SHR: case TMS.TM_BNOT: { + let n1 = lvm.tonumber(p1); + let n2 = lvm.tonumber(p2); + if (n1 !== false && n2 !== false) + ldebug.luaG_tointerror(L, p1, p2); + else + ldebug.luaG_opinterror(L, p1, p2, "perform bitwise operation on"); + } + default: + ldebug.luaG_opinterror(L, p1, p2, "perform arithmetic on"); + } } }; -- cgit v1.2.3-54-g00ecf