blob: 235e67fd8445efe28aa866e80bd385d565928ebf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
local config = require 'config'
TEST [[
---@class A
local a = {}
a.<?x?> = 1
---@return A
local function f() end
local b = f()
return b.<!x!>
]]
TEST [[
---@class A
local a = {}
a.<?x?> = 1
---@return table
---@return A
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
--]]
-- TODO: How to search references of function?
--[=[
TEST [[
local function f()
return <~<!function~> ()
end!>
end
local <!f2!> = f()
]]
TEST [[
local function f()
return nil, <~<!function~> ()
end!>
end
local _, <!f2!> = f()
]]
]=]
TEST [[
---@class A
local t
---@class B: A
local <?v?>
]]
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!>()
]]
|