diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2021-06-09 18:09:49 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2021-06-09 18:09:49 +0800 |
commit | b21f5d2cd9eaf02986ba526f58f0c5fedbd1fde3 (patch) | |
tree | fe489b14cf31612fb9e85cb2e033c841d50dbe33 /test/references/all.lua | |
parent | 3945d61e1a7dd20b33f7bcd4d5c9c5f09d77b510 (diff) | |
download | lua-language-server-b21f5d2cd9eaf02986ba526f58f0c5fedbd1fde3.zip |
improve
Diffstat (limited to 'test/references/all.lua')
-rw-r--r-- | test/references/all.lua | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/test/references/all.lua b/test/references/all.lua index c27beb3c..a9442ae1 100644 --- a/test/references/all.lua +++ b/test/references/all.lua @@ -76,3 +76,138 @@ local function f() end local a, b = f() return a.x, b.<!x!> ]] + +TEST [[ +local <?mt?> = {} +function <!mt!>:x() + <!self!>:x() +end +]] + +TEST [[ +local mt = {} +function mt:<?x?>() + self:<!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 <?Dog?> = {} + +---@generic T +---@param type1 T +---@return T +function foobar(type1) +end + +local <!v1!> = foobar(<!Dog!>) +]] + +TEST [[ +---@class Dog +local Dog = {} +function Dog:<?eat?>() +end + +---@generic T +---@param type1 T +---@return T +function foobar(type1) + return {} +end + +local v1 = foobar(Dog) +v1:<!eat!>() +]] + +TEST [[ +---@class Dog +local Dog = {} +function Dog:<?eat?>() +end + +---@class Master +local Master = {} + +---@generic T +---@param type1 string +---@param type2 T +---@return T +function Master:foobar(type1, type2) + return {} +end + +local v1 = Master:foobar("", Dog) +v1.<!eat!>() +]] + +TEST [[ +---@class A +local <?A?> + +---@generic T +---@param self T +---@return T +function m.f(self) end + +local <!b!> = m.f(<!A!>) +]] + +TEST [[ +---@class A +local <?A?> + +---@generic T +---@param self T +---@return T +function m:f() end + +local <!b!> = m.f(<!A!>) +]] + +TEST [[ +---@class A +local <?A?> + +---@generic T +---@param self T +---@return T +function <!A!>.f(self) end + +local <!b!> = <!A!>:f() +]] + +TEST [[ +---@class A +local <?A?> + +---@generic T +---@param self T +---@return T +function <!A!>:f() end + +local <!b!> = <!A!>:f() +]] |