diff options
Diffstat (limited to 'test/references')
-rw-r--r-- | test/references/all.lua | 112 | ||||
-rw-r--r-- | test/references/common.lua | 210 | ||||
-rw-r--r-- | test/references/init.lua | 230 |
3 files changed, 250 insertions, 302 deletions
diff --git a/test/references/all.lua b/test/references/all.lua index f8fe3d6e..323a3bd3 100644 --- a/test/references/all.lua +++ b/test/references/all.lua @@ -1,57 +1,3 @@ -local core = require 'core.reference' -local files = require 'files' - -local function catch_target(script) - local list = {} - local cur = 1 - while true do - local start, finish = script:find('<[!?].-[!?]>', cur) - if not start then - break - end - list[#list+1] = { start + 2, finish - 2 } - cur = finish + 1 - end - return list -end - -local function founded(targets, results) - if #targets ~= #results then - return false - end - for _, target in ipairs(targets) do - for _, result in ipairs(results) do - if target[1] == result[1] and target[2] == result[2] then - goto NEXT - end - end - do return false end - ::NEXT:: - end - return true -end - -function TEST(script) - files.removeAll() - local expect = catch_target(script) - local start = script:find('<[?~]') - local finish = script:find('[?~]>') - local pos = (start + finish) // 2 + 1 - local new_script = script:gsub('<[!?~]', ' '):gsub('[!?~]>', ' ') - files.setText('', new_script) - - local results = core('', pos) - if results then - local positions = {} - for i, result in ipairs(results) do - positions[i] = { result.target.start, result.target.finish } - end - assert(founded(expect, positions)) - else - assert(#expect == 0) - end -end - TEST [[ ---@class A local a = {} @@ -91,26 +37,26 @@ function mt:<?x?>() end ]] -TEST [[ ----@class Dog -local mt = {} -function mt:<?eat?>() -end - ----@class Master -local mt2 = {} -function mt2:init() - ---@type Dog - local foo = self:doSomething() - ---@type Dog - self.dog = getDog() -end -function mt2:feed() - self.dog:<!eat!>() -end -function mt2:doSomething() -end -]] +--TEST [[ +-----@class Dog +--local mt = {} +--function mt:<?eat?>() +--end +-- +-----@class Master +--local mt2 = {} +--function mt2:init() +-- ---@type Dog +-- local foo = self:doSomething() +-- ---@type Dog +-- self.dog = getDog() +--end +--function mt2:feed() +-- self.dog:<!eat!>() +--end +--function mt2:doSomething() +--end +--]] -- 泛型的反向搜索 TEST [[ @@ -229,3 +175,21 @@ end local _, <!f2!> = f() ]] + +TEST [[ +local <?x?> +local function f() + return <!x!> +end +local <!y!> = f() +]] + +TEST [[ +local <?x?> +local function f() + return function () + return <!x!> + end +end +local <!y!> = f()() +]] diff --git a/test/references/common.lua b/test/references/common.lua new file mode 100644 index 00000000..e5f61cb3 --- /dev/null +++ b/test/references/common.lua @@ -0,0 +1,210 @@ +TEST [[ +local <?a?> = 1 +<!a!> = <!a!> +]] + +TEST [[ +<?a?> = 1 +<!a!> = <!a!> +]] + +TEST [[ +local t +t.<?a?> = 1 +t.<!a!> = t.<!a!> +]] + +TEST [[ +t.<?a?> = 1 +t.<!a!> = t.<!a!> +]] + +TEST [[ +:: <!LABEL!> :: +goto <?LABEL?> +if true then + goto <!LABEL!> +end +]] + +TEST [[ +:: <?LABEL?> :: +goto <!LABEL!> +if true then + goto <!LABEL!> +end +]] + +TEST [[ +local a = 1 +local <?a?> = 1 +<!a!> = <!a!> +]] + +TEST [[ +local <!a!> +local <?b?> = <!a!> +]] + +TEST [[ +local <?a?> +local <!b!> = <!a!> +]] + +TEST [[ +local t = { + <!a!> = 1 +} +print(t.<?a?>) +]] + +TEST [[ +local t = { + <?a?> = 1 +} +print(t.<!a!>) +]] + +TEST [[ +t[<?'a'?>] = 1 +print(t.<!a!>) +]] + +TEST [[ +local t = { + [<?'a'?>] = 1 +} +print(t.<!a!>) +]] + +TEST [[ +table.<!dump!>() +function table.<?dump?>() +end +]] + +TEST [[ +local t = {} +t.<?x?> = 1 +t[a.b.c] = 1 +]] + +TEST [[ +local t = {} +t.x = 1 +t[a.b.<?x?>] = 1 +]] + +TEST [[ +local t +local <!f!> = t.<?f?> + +<!f!>() + +return { + <!f!> = <!f!>, +} +]] + +TEST [[ +self = { + results = { + <?labels?> = {}, + } +} +self[self.results.<!labels!>] = lbl +]] + +TEST [[ +a.b.<?c?> = 1 +print(a.b.<!c!>) +]] + +TEST [[ +local <!mt!> = {} +function <!mt!>:x() + <?self?>:x() +end +]] + +TEST [[ +local mt = {} +function mt:<!x!>() + self:<?x?>() +end +]] + +TEST [[ +a.<!b!>.c = 1 +print(a.<?b?>.c) +]] + +TEST [[ +local <?f?> +local t = { + <!a!> = <!f!> +} +print(t.<!a!>) +]] + +TEST [[ +local <!f!> +local <!t!> = <?f?> +]] + +TEST [[ +local <!f!> +a.<!t!> = <?f?> +]] + +TEST [[ +<!t!>.<!f!> = <?t?> +]] + +TEST [[ +local <!f!> +local <?t?> = <!f!> +]] + +TEST [[ +local <!t!> +<!t!>.<!f!> = <?t?> +]] + +TEST [[ +_G.<?xxx?> = 1 + +print(<!xxx!>) +]] + +TEST [[ +---@class <!Class!> +---@type <?Class?> +---@type <!Class!> +]] + +TEST [[ +---@class <?Class?> +---@type <!Class!> +---@type <!Class!> +]] + +TEST [[ +---@class Class +local <?t?> +---@type Class +local <!x!> +]] + +TEST [[ +---@class Class +local <!t!> +---@type Class +local <?x?> +]] + +-- BUG +TEST [[ +---@return <?xxx?> +function f() end +]] diff --git a/test/references/init.lua b/test/references/init.lua index fbbd3227..2fba92e5 100644 --- a/test/references/init.lua +++ b/test/references/init.lua @@ -52,231 +52,5 @@ function TEST(script) end end -TEST [[ -local <?a?> = 1 -<!a!> = <!a!> -]] - -TEST [[ -<?a?> = 1 -<!a!> = <!a!> -]] - -TEST [[ -local t -t.<?a?> = 1 -t.<!a!> = t.<!a!> -]] - -TEST [[ -t.<?a?> = 1 -t.<!a!> = t.<!a!> -]] - -TEST [[ -:: <!LABEL!> :: -goto <?LABEL?> -if true then - goto <!LABEL!> -end -]] - -TEST [[ -:: <?LABEL?> :: -goto <!LABEL!> -if true then - goto <!LABEL!> -end -]] - -TEST [[ -local a = 1 -local <?a?> = 1 -<!a!> = <!a!> -]] - -TEST [[ -local <!a!> -local <?b?> = <!a!> -]] - -TEST [[ -local <?a?> -local <!b!> = <!a!> -]] - -TEST [[ -local t = { - <!a!> = 1 -} -print(t.<?a?>) -]] - -TEST [[ -local t = { - <?a?> = 1 -} -print(t.<!a!>) -]] - -TEST [[ -t[<?'a'?>] = 1 -print(t.<!a!>) -]] - -TEST [[ -local t = { - [<?'a'?>] = 1 -} -print(t.<!a!>) -]] - -TEST [[ -table.<!dump!>() -function table.<?dump?>() -end -]] - -TEST [[ -local <?x?> -local function f() - return <!x!> -end -local y = f() -]] - -TEST [[ -local <?x?> -local function f() - return function () - return <!x!> - end -end -local y = f()() -]] - -TEST [[ -local t = {} -t.<?x?> = 1 -t[a.b.c] = 1 -]] - -TEST [[ -local t = {} -t.x = 1 -t[a.b.<?x?>] = 1 -]] - -TEST [[ -local t -local <!f!> = t.<?f?> - -<!f!>() - -return { - <!f!> = <!f!>, -} -]] - -TEST [[ -self = { - results = { - <?labels?> = {}, - } -} -self[self.results.<!labels!>] = lbl -]] - -TEST [[ -a.b.<?c?> = 1 -print(a.b.<!c!>) -]] - -TEST [[ -local <!mt!> = {} -function <!mt!>:x() - <?self?>:x() -end -]] - -TEST [[ -local mt = {} -function mt:<!x!>() - self:<?x?>() -end -]] - -TEST [[ -a.<!b!>.c = 1 -print(a.<?b?>.c) -]] - -TEST [[ -local <?f?> -local t = { - <!a!> = <!f!> -} -print(t.<!a!>) -]] - -TEST [[ -local <!f!> -local <!t!> = <?f?> -]] - -TEST [[ -local <!f!> -a.<!t!> = <?f?> -]] - -TEST [[ -<!t!>.<!f!> = <?t?> -]] - -TEST [[ -local <!f!> -local <?t?> = <!f!> -]] - -TEST [[ -local <!t!> -<!t!>.<!f!> = <?t?> -]] - -TEST [[ -_G.<?xxx?> = 1 - -print(<!xxx!>) -]] - -TEST [[ ----@class <!Class!> ----@type <?Class?> ----@type <!Class!> -]] - -TEST [[ ----@class <?Class?> ----@type <!Class!> ----@type <!Class!> -]] - -TEST [[ ----@class Class -local <?t?> ----@type Class -local <!x!> -]] - -TEST [[ ----@class Class -local <!t!> ----@type Class -local <?x?> -]] - --- BUG -TEST [[ ----@return <?xxx?> -function f() end -]] +require 'references.common' +require 'references.all' |