From 51cb6529d23b01586a60c2a015f22dd1eca40127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Fri, 25 Oct 2019 17:45:55 +0800 Subject: =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server-beta/src/searcher/eachRef.lua | 20 ++++++ server-beta/test/definition/method.lua | 109 -------------------------------- server-beta/test/definition/special.lua | 109 ++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+), 109 deletions(-) diff --git a/server-beta/src/searcher/eachRef.lua b/server-beta/src/searcher/eachRef.lua index 81bfb8bf..65fd3529 100644 --- a/server-beta/src/searcher/eachRef.lua +++ b/server-beta/src/searcher/eachRef.lua @@ -120,6 +120,22 @@ local function ofLiteral(searcher, source, callback) end end +local function ofGoTo(searcher, source, callback) + local name = source[1] + local label = guide.getLabel(source, name) + if label then + callback { + searcher = searcher, + source = label, + mode = 'set', + } + end +end + +local function ofLabel(searcher, source, callback) + +end + return function (searcher, source, callback) local stype = source.type if stype == 'local' then @@ -138,5 +154,9 @@ return function (searcher, source, callback) or stype == 'boolean' or stype == 'string' then ofLiteral(searcher, source, callback) + elseif stype == 'goto' then + ofGoTo(searcher, source, callback) + elseif stype == 'label' then + ofLabel(searcher, source, callback) end end diff --git a/server-beta/test/definition/method.lua b/server-beta/test/definition/method.lua index a5df637f..aa7aacdc 100644 --- a/server-beta/test/definition/method.lua +++ b/server-beta/test/definition/method.lua @@ -29,112 +29,3 @@ end function mt:() end ]] - -TEST [[ -local mt -mt.__index = mt -function mt:() -end - -local obj = setmetatable({}, mt) -obj:() -]] - -TEST [[ -local mt -function mt:() -end - -local obj = setmetatable({}, { __index = mt }) -obj:() -]] - -TEST [[ -local mt -function mt:() -end - -setmetatable(api, { __index = mt }) -api:() -]] - -TEST [[ -local mt -local api -function mt:() -end - -setmetatable(api, { __index = mt }) -api:() -]] - -TEST [[ -local mt -function mt:x() - self.() -end - -local obj = setmetatable({}, { __index = mt }) -obj. = 1 -obj:x() -]] - -TEST [[ -local mt -function mt:x() - self.() -end - -local obj = setmetatable({ = 1 }, { __index = mt }) -obj:x() -]] - -TEST [[ -local mt -function mt:x() - self.a.() -end - -local obj = setmetatable({ - a = { - = 1, - } -}, { __index = mt }) -obj:x() -]] - -TEST [[ -local sm = setmetatable -local mt -mt.__index = mt -function mt:() -end - -local obj = sm({}, mt) -obj:() -]] - -TEST [[ -local mt = {} -function mt:() -end - -local obj = setmetatable({}, {__index = mt}) -function obj:x() -end - -mt:() -]] - --- TODO 通过代码执行顺序来判断 ---TEST [[ ---local mt = {} ---function mt:x() ---end --- ---local obj = setmetatable({}, {__index = mt}) ---function obj:() ---end --- ---obj:() ---]] diff --git a/server-beta/test/definition/special.lua b/server-beta/test/definition/special.lua index 823e3a46..febf8943 100644 --- a/server-beta/test/definition/special.lua +++ b/server-beta/test/definition/special.lua @@ -12,3 +12,112 @@ TEST [[ print() ]] + +TEST [[ +local mt +mt.__index = mt +function mt:() +end + +local obj = setmetatable({}, mt) +obj:() +]] + +TEST [[ +local mt +function mt:() +end + +local obj = setmetatable({}, { __index = mt }) +obj:() +]] + +TEST [[ +local mt +function mt:() +end + +setmetatable(api, { __index = mt }) +api:() +]] + +TEST [[ +local mt +local api +function mt:() +end + +setmetatable(api, { __index = mt }) +api:() +]] + +TEST [[ +local mt +function mt:x() + self.() +end + +local obj = setmetatable({}, { __index = mt }) +obj. = 1 +obj:x() +]] + +TEST [[ +local mt +function mt:x() + self.() +end + +local obj = setmetatable({ = 1 }, { __index = mt }) +obj:x() +]] + +TEST [[ +local mt +function mt:x() + self.a.() +end + +local obj = setmetatable({ + a = { + = 1, + } +}, { __index = mt }) +obj:x() +]] + +TEST [[ +local sm = setmetatable +local mt +mt.__index = mt +function mt:() +end + +local obj = sm({}, mt) +obj:() +]] + +TEST [[ +local mt = {} +function mt:() +end + +local obj = setmetatable({}, {__index = mt}) +function obj:x() +end + +mt:() +]] + +-- TODO 通过代码执行顺序来判断 +--TEST [[ +--local mt = {} +--function mt:x() +--end +-- +--local obj = setmetatable({}, {__index = mt}) +--function obj:() +--end +-- +--obj:() +--]] -- cgit v1.2.3