diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2020-11-20 21:57:09 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2020-11-20 21:57:09 +0800 |
commit | 4ca61ec457822dd14966afa0752340ae8ce180a1 (patch) | |
tree | ae8adb1ad82c717868e551e699fd3cf3bb290089 /test/rename | |
parent | c63b2e404d8d2bb984afe3678a5ba2b2836380cc (diff) | |
download | lua-language-server-4ca61ec457822dd14966afa0752340ae8ce180a1.zip |
no longer beta
Diffstat (limited to 'test/rename')
-rw-r--r-- | test/rename/init.lua | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/test/rename/init.lua b/test/rename/init.lua new file mode 100644 index 00000000..5ca0ca15 --- /dev/null +++ b/test/rename/init.lua @@ -0,0 +1,205 @@ +local core = require 'core.rename' +local files = require 'files' + +local function replace(text, positions) + local buf = {} + table.sort(positions, function (a, b) + return a.start < b.start + end) + local lastPos = 1 + for _, info in ipairs(positions) do + buf[#buf+1] = text:sub(lastPos, info.start - 1) + buf[#buf+1] = info.text + lastPos = info.finish + 1 + end + buf[#buf+1] = text:sub(lastPos) + return table.concat(buf) +end + +function TEST(oldName, newName) + return function (oldScript) + return function (newScript) + files.removeAll() + files.setText('', oldScript) + local pos = oldScript:find('[^%w_]'..oldName..'[^%w_]') + assert(pos) + + local positions = core.rename('', pos+1, newName) + local script = oldScript + if positions then + script = replace(script, positions) + end + assert(script == newScript) + end + end +end + +TEST ('a', 'b') [[ +local a = 1 +]] [[ +local b = 1 +]] + +TEST ('a', 'b') [[ +local a = 1 +a = 2 +a = a +]] [[ +local b = 1 +b = 2 +b = b +]] + +TEST ('a', 'b') [[ +t.a = 1 +a = t.a +a = t['a'] +a = t["a"] +a = t[ [=[a]=] ] +]] [[ +t.b = 1 +a = t.b +a = t['b'] +a = t["b"] +a = t[ [=[b]=] ] +]] + +TEST ('a', 'b') [[ +:: a :: +goto a +]] [[ +:: b :: +goto b +]] + +TEST ('a', 'b') [[ +local function f(a) + return a +end +]] [[ +local function f(b) + return b +end +]] + +TEST ('a', '!!!') [[ +t = { + a = 0 +} +t.a = 1 +a = t.a +]] [[ +t = { + ["!!!"] = 0 +} +t["!!!"] = 1 +a = t["!!!"] +]] + +TEST ('a', '!!!') [[ +t = { + ['a'] = 0 +} +t.a = 1 +a = t.a +]] [[ +t = { + ['!!!'] = 0 +} +t["!!!"] = 1 +a = t["!!!"] +]] + +TEST ('a', '"') [[ +print(t[ "a" ]) +]] [[ +print(t[ "\"" ]) +]] + +TEST ('a', '!!!') [[ +function mt:a() +end +mt:a() +]] [[ +mt["!!!"] = function (self) +end +mt:!!!() +]] + +TEST ('a', '!!!') [[ +function mt:a(x, y) +end +mt:a() +]] [[ +mt["!!!"] = function (self, x, y) +end +mt:!!!() +]] + +TEST ('a', '!!!') [[ +a = a +]] [[ +_ENV["!!!"] = _ENV["!!!"] +]] + +TEST ('a', '!!!') [[ +function a() end +]] [[ +_ENV["!!!"] = function () end +]] + +TEST ('a', 'a.b') [[ +function a() end +a() +]] [[ +function a.b() end +a.b() +]] + +TEST ('a', 'a:b') [[ +function a() end +a() +]] [[ +function a:b() end +a:b() +]] + +-- TODO +do return end +TEST ('class1', 'class2') [[ +---@class1 + +---@type class1 + +---@param x class1 +]] [[ +---@class2 + +---@type class2 + +---@param x class2 +]] + +TEST ('alias1', 'alias2') [[ +---@alias alias1 class + +---@type alias1 + +---@param x alias1 +]] [[ +---@alias alias2 class + +---@type alias2 + +---@param x alias2 +]] + +TEST ('arg1', 'arg2') [[ +---@param arg1 number +function f(arg1) +end +]] [[ +---@param arg2 number +function f(arg2) +end +]] |