diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2020-12-23 10:54:06 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2020-12-23 10:54:06 +0800 |
commit | 2ee2233df6d8bfc6c6ed60cb6ab0051a6f41e219 (patch) | |
tree | d3eb0661a8e62c70e209768c215157324755b6bd /script/parser | |
parent | a51d5f625faa63fa10770743a8f1a0e1693a43a3 (diff) | |
download | lua-language-server-2ee2233df6d8bfc6c6ed60cb6ab0051a6f41e219.zip |
fix
Diffstat (limited to 'script/parser')
-rw-r--r-- | script/parser/guide.lua | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/script/parser/guide.lua b/script/parser/guide.lua index 0d5775e6..b07a301e 100644 --- a/script/parser/guide.lua +++ b/script/parser/guide.lua @@ -18,6 +18,7 @@ local assert = assert local select = select local osClock = os.clock local tonumber = tonumber +local tointeger = math.tointeger local DEVELOP = _G.DEVELOP local log = log local _G = _G @@ -3411,6 +3412,8 @@ function m.inferCheckBinary(status, source) or m.getInferLiteral(status, source[1], 'number') local v2 = m.getInferLiteral(status, source[2], 'integer') or m.getInferLiteral(status, source[2], 'number') + v1 = tonumber(v1) + v2 = tonumber(v2) local v if v1 and v2 then v = v1 <= v2 @@ -3427,6 +3430,8 @@ function m.inferCheckBinary(status, source) or m.getInferLiteral(status, source[1], 'number') local v2 = m.getInferLiteral(status, source[2], 'integer') or m.getInferLiteral(status, source[2], 'number') + v1 = tonumber(v1) + v2 = tonumber(v2) local v if v1 and v2 then v = v1 >= v2 @@ -3443,6 +3448,8 @@ function m.inferCheckBinary(status, source) or m.getInferLiteral(status, source[1], 'number') local v2 = m.getInferLiteral(status, source[2], 'integer') or m.getInferLiteral(status, source[2], 'number') + v1 = tonumber(v1) + v2 = tonumber(v2) local v if v1 and v2 then v = v1 < v2 @@ -3459,6 +3466,8 @@ function m.inferCheckBinary(status, source) or m.getInferLiteral(status, source[1], 'number') local v2 = m.getInferLiteral(status, source[2], 'integer') or m.getInferLiteral(status, source[2], 'number') + v1 = tonumber(v1) + v2 = tonumber(v2) local v if v1 and v2 then v = v1 > v2 @@ -3473,6 +3482,8 @@ function m.inferCheckBinary(status, source) elseif op.type == '|' then local v1 = m.getInferLiteral(status, source[1], 'integer') local v2 = m.getInferLiteral(status, source[2], 'integer') + v1 = tointeger(v1) + v2 = tointeger(v2) local v if v1 and v2 then v = v1 | v2 @@ -3487,6 +3498,8 @@ function m.inferCheckBinary(status, source) elseif op.type == '~' then local v1 = m.getInferLiteral(status, source[1], 'integer') local v2 = m.getInferLiteral(status, source[2], 'integer') + v1 = tointeger(v1) + v2 = tointeger(v2) local v if v1 and v2 then v = v1 ~ v2 @@ -3501,6 +3514,8 @@ function m.inferCheckBinary(status, source) elseif op.type == '&' then local v1 = m.getInferLiteral(status, source[1], 'integer') local v2 = m.getInferLiteral(status, source[2], 'integer') + v1 = tointeger(v1) + v2 = tointeger(v2) local v if v1 and v2 then v = v1 & v2 @@ -3515,6 +3530,8 @@ function m.inferCheckBinary(status, source) elseif op.type == '<<' then local v1 = m.getInferLiteral(status, source[1], 'integer') local v2 = m.getInferLiteral(status, source[2], 'integer') + v1 = tointeger(v1) + v2 = tointeger(v2) local v if v1 and v2 then v = v1 << v2 @@ -3529,6 +3546,8 @@ function m.inferCheckBinary(status, source) elseif op.type == '>>' then local v1 = m.getInferLiteral(status, source[1], 'integer') local v2 = m.getInferLiteral(status, source[2], 'integer') + v1 = tointeger(v1) + v2 = tointeger(v2) local v if v1 and v2 then v = v1 >> v2 @@ -3543,6 +3562,8 @@ function m.inferCheckBinary(status, source) elseif op.type == '..' then local v1 = m.getInferLiteral(status, source[1], 'string') local v2 = m.getInferLiteral(status, source[2], 'string') + v1 = type(v1) == 'string' and v1 or nil + v2 = type(v2) == 'string' and v2 or nil local v if v1 and v2 then v = v1 .. v2 @@ -3559,6 +3580,8 @@ function m.inferCheckBinary(status, source) or m.getInferLiteral(status, source[1], 'number') local v2 = m.getInferLiteral(status, source[2], 'integer') or m.getInferLiteral(status, source[2], 'number') + v1 = tonumber(v1) + v2 = tonumber(v2) local v if v1 and v2 then v = v1 ^ v2 @@ -3575,6 +3598,8 @@ function m.inferCheckBinary(status, source) or m.getInferLiteral(status, source[1], 'number') local v2 = m.getInferLiteral(status, source[2], 'integer') or m.getInferLiteral(status, source[2], 'number') + v1 = tonumber(v1) + v2 = tonumber(v2) local v if v1 and v2 and v2 ~= 0 then v = v1 / v2 |