From 98dc39631314a2c6c788655c617c9c45d1cce51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Wed, 1 Dec 2021 17:40:32 +0800 Subject: [PATCH] fix runtime errors --- changelog.md | 1 + script/core/definition.lua | 3 +++ script/core/diagnostics/unused-function.lua | 3 +++ script/core/infer.lua | 4 ++++ script/core/reference.lua | 3 +++ 5 files changed, 14 insertions(+) diff --git a/changelog.md b/changelog.md index 6a447922d..795991854 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,7 @@ * `FIX` [#825](https://github.com/sumneko/lua-language-server/issues/825) * `FIX` [#827](https://github.com/sumneko/lua-language-server/issues/827) * `FIX` [#837](https://github.com/sumneko/lua-language-server/issues/837) +* `FIX` runtime errors ## 2.5.1 `2021-11-29` diff --git a/script/core/definition.lua b/script/core/definition.lua index d77ddac1d..a1f46afc5 100644 --- a/script/core/definition.lua +++ b/script/core/definition.lua @@ -155,6 +155,9 @@ return function (uri, offset) or src.type == 'setindex' or src.type == 'tableindex' then src = src.index + if not src then + goto CONTINUE + end if not guide.isLiteral(src) then goto CONTINUE end diff --git a/script/core/diagnostics/unused-function.lua b/script/core/diagnostics/unused-function.lua index 0e0c00038..79cb16e2f 100644 --- a/script/core/diagnostics/unused-function.lua +++ b/script/core/diagnostics/unused-function.lua @@ -28,6 +28,9 @@ return function (uri, callback) local cache = {} ---@async local function checkFunction(source) + if not source then + return + end if cache[source] ~= nil then return cache[source] end diff --git a/script/core/infer.lua b/script/core/infer.lua index 8da35289c..39cb8c5e7 100644 --- a/script/core/infer.lua +++ b/script/core/infer.lua @@ -598,6 +598,10 @@ function m.searchAndViewInfers(source, field, mark) end local infers = m.searchInfers(source, field, mark) local view = m.viewInfers(infers) + if type(view) == 'boolean' then + log.error('Why view is boolean?', util.dump(infers)) + return 'any' + end return view end diff --git a/script/core/reference.lua b/script/core/reference.lua index 067d2e235..5e4a4cbf5 100644 --- a/script/core/reference.lua +++ b/script/core/reference.lua @@ -111,6 +111,9 @@ return function (uri, position) elseif src.type == 'table' and src.parent.type ~= 'return' then goto CONTINUE end + if not src then + goto CONTINUE + end results[#results+1] = { target = src, uri = root.uri,