summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2019-10-25 17:45:55 +0800
committer最萌小汐 <sumneko@hotmail.com>2019-10-25 17:45:55 +0800
commit51cb6529d23b01586a60c2a015f22dd1eca40127 (patch)
treef6acf6d223307606e52f06fa971f31fa842f3f09
parent33fd161778557ab8f3a511b544d5416b6b8285bd (diff)
downloadlua-language-server-51cb6529d23b01586a60c2a015f22dd1eca40127.zip
更新
-rw-r--r--server-beta/src/searcher/eachRef.lua20
-rw-r--r--server-beta/test/definition/method.lua109
-rw-r--r--server-beta/test/definition/special.lua109
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?>()
+--]]