diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2019-10-25 17:45:55 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2019-10-25 17:45:55 +0800 |
commit | 51cb6529d23b01586a60c2a015f22dd1eca40127 (patch) | |
tree | f6acf6d223307606e52f06fa971f31fa842f3f09 | |
parent | 33fd161778557ab8f3a511b544d5416b6b8285bd (diff) | |
download | lua-language-server-51cb6529d23b01586a60c2a015f22dd1eca40127.zip |
更新
-rw-r--r-- | server-beta/src/searcher/eachRef.lua | 20 | ||||
-rw-r--r-- | server-beta/test/definition/method.lua | 109 | ||||
-rw-r--r-- | 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:<!m4!>() end ]] - -TEST [[ -local mt -mt.__index = mt -function mt:<!method1!>() -end - -local obj = setmetatable({}, mt) -obj:<?method1?>() -]] - -TEST [[ -local mt -function mt:<!method1!>() -end - -local obj = setmetatable({}, { __index = mt }) -obj:<?method1?>() -]] - -TEST [[ -local mt -function mt:<!method1!>() -end - -setmetatable(api, { __index = mt }) -api:<?method1?>() -]] - -TEST [[ -local mt -local api -function mt:<!method1!>() -end - -setmetatable(api, { __index = mt }) -api:<?method1?>() -]] - -TEST [[ -local mt -function mt:x() - self.<?init?>() -end - -local obj = setmetatable({}, { __index = mt }) -obj.<!init!> = 1 -obj:x() -]] - -TEST [[ -local mt -function mt:x() - self.<?init?>() -end - -local obj = setmetatable({ <!init!> = 1 }, { __index = mt }) -obj:x() -]] - -TEST [[ -local mt -function mt:x() - self.a.<?out?>() -end - -local obj = setmetatable({ - a = { - <!out!> = 1, - } -}, { __index = mt }) -obj:x() -]] - -TEST [[ -local sm = setmetatable -local mt -mt.__index = mt -function mt:<!method1!>() -end - -local obj = sm({}, mt) -obj:<?method1?>() -]] - -TEST [[ -local mt = {} -function mt:<!x!>() -end - -local obj = setmetatable({}, {__index = mt}) -function obj:x() -end - -mt:<?x?>() -]] - --- TODO 通过代码执行顺序来判断 ---TEST [[ ---local mt = {} ---function mt:x() ---end --- ---local obj = setmetatable({}, {__index = mt}) ---function obj:<!x!>() ---end --- ---obj:<?x?>() ---]] 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 [[ <!rawset(_G, 'x', 1)!> print(<?x?>) ]] + +TEST [[ +local mt +mt.__index = mt +function mt:<!method1!>() +end + +local obj = setmetatable({}, mt) +obj:<?method1?>() +]] + +TEST [[ +local mt +function mt:<!method1!>() +end + +local obj = setmetatable({}, { __index = mt }) +obj:<?method1?>() +]] + +TEST [[ +local mt +function mt:<!method1!>() +end + +setmetatable(api, { __index = mt }) +api:<?method1?>() +]] + +TEST [[ +local mt +local api +function mt:<!method1!>() +end + +setmetatable(api, { __index = mt }) +api:<?method1?>() +]] + +TEST [[ +local mt +function mt:x() + self.<?init?>() +end + +local obj = setmetatable({}, { __index = mt }) +obj.<!init!> = 1 +obj:x() +]] + +TEST [[ +local mt +function mt:x() + self.<?init?>() +end + +local obj = setmetatable({ <!init!> = 1 }, { __index = mt }) +obj:x() +]] + +TEST [[ +local mt +function mt:x() + self.a.<?out?>() +end + +local obj = setmetatable({ + a = { + <!out!> = 1, + } +}, { __index = mt }) +obj:x() +]] + +TEST [[ +local sm = setmetatable +local mt +mt.__index = mt +function mt:<!method1!>() +end + +local obj = sm({}, mt) +obj:<?method1?>() +]] + +TEST [[ +local mt = {} +function mt:<!x!>() +end + +local obj = setmetatable({}, {__index = mt}) +function obj:x() +end + +mt:<?x?>() +]] + +-- TODO 通过代码执行顺序来判断 +--TEST [[ +--local mt = {} +--function mt:x() +--end +-- +--local obj = setmetatable({}, {__index = mt}) +--function obj:<!x!>() +--end +-- +--obj:<?x?>() +--]] |