summaryrefslogtreecommitdiff
path: root/test/definition/special.lua
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2020-11-20 21:57:09 +0800
committer最萌小汐 <sumneko@hotmail.com>2020-11-20 21:57:09 +0800
commit4ca61ec457822dd14966afa0752340ae8ce180a1 (patch)
treeae8adb1ad82c717868e551e699fd3cf3bb290089 /test/definition/special.lua
parentc63b2e404d8d2bb984afe3678a5ba2b2836380cc (diff)
downloadlua-language-server-4ca61ec457822dd14966afa0752340ae8ce180a1.zip
no longer beta
Diffstat (limited to 'test/definition/special.lua')
-rw-r--r--test/definition/special.lua126
1 files changed, 126 insertions, 0 deletions
diff --git a/test/definition/special.lua b/test/definition/special.lua
new file mode 100644
index 00000000..4e3728e3
--- /dev/null
+++ b/test/definition/special.lua
@@ -0,0 +1,126 @@
+TEST [[
+_ENV.<!x!> = 1
+print(<?x?>)
+]]
+
+TEST [[
+_G.<!x!> = 1
+print(<?x?>)
+]]
+
+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?>()
+]]
+
+-- TODO 不支持从方法内部找外部的赋值
+--TEST [[
+--local mt
+--function mt:x()
+-- self.<?init?>()
+--end
+--
+--local obj, _ = setmetatable({}, { __index = mt })
+--obj.<!init!> = 1
+--obj:x()
+--]]
+
+-- TODO 不支持从方法内部找外部的赋值
+--TEST [[
+--local mt
+--function mt:x()
+-- self.<?init?>()
+--end
+--
+--local obj = setmetatable({ <!init!> = 1 }, { __index = mt })
+--obj:x()
+--]]
+
+-- TODO 不支持从方法内部找外部的赋值
+--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?>()
+]]