From 9d8bd2d1964dc28d30837eafeec7389e26c6fa98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Mon, 25 Mar 2019 14:28:13 +0800 Subject: =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=9F=A5=E6=89=BE=E5=8C=BF=E5=90=8D?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=9A=84=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/core/references.lua | 10 ++++++++++ server/src/vm/value.lua | 3 +++ server/test/references/init.lua | 9 +++++++++ 3 files changed, 22 insertions(+) diff --git a/server/src/core/references.lua b/server/src/core/references.lua index dfd26575..4bd26b07 100644 --- a/server/src/core/references.lua +++ b/server/src/core/references.lua @@ -24,6 +24,16 @@ local function parseResult(vm, source, declarat, callback) end) return end + if source:bindFunction() then + if declarat then + callback(source:bindFunction():getSource()) + end + source:bindFunction():eachInfo(function (info, src) + if (declarat and (info.type == 'set' or info.type == 'local')) or info.type == 'get' then + callback(src) + end + end) + end if source:bindValue() then source:bindValue():eachInfo(function (info, src) if (declarat and (info.type == 'set' or info.type == 'local')) or info.type == 'get' then diff --git a/server/src/vm/value.lua b/server/src/vm/value.lua index 4cbc47f9..c0f55b9d 100644 --- a/server/src/vm/value.lua +++ b/server/src/vm/value.lua @@ -315,6 +315,9 @@ function mt:addInfo(tp, source, ...) if not id then error('Not instanted source') end + if not tp then + error('Miss info type') + end if self._info[id] then return end diff --git a/server/test/references/init.lua b/server/test/references/init.lua index bcaafbbc..6a8b42db 100644 --- a/server/test/references/init.lua +++ b/server/test/references/init.lua @@ -85,3 +85,12 @@ function :a() :remove() end ]] + +TEST [[ +local function f() + return +end + +local = f() +]] -- cgit v1.2.3