diff options
Diffstat (limited to 'test/references/all.lua')
-rw-r--r-- | test/references/all.lua | 112 |
1 files changed, 38 insertions, 74 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()() +]] |