@@ -17,29 +17,41 @@ pub fn infer_call_expr_func(
17
17
call_expr : LuaCallExpr ,
18
18
call_expr_type : LuaType ,
19
19
infer_guard : & mut InferGuard ,
20
+ args_count : Option < usize > ,
20
21
) -> Option < Arc < LuaFunctionType > > {
21
22
match call_expr_type {
22
23
LuaType :: DocFunction ( func) => Some ( func) ,
23
- LuaType :: Signature ( signature_id) => {
24
- infer_signature_doc_function ( db, config, signature_id. clone ( ) , call_expr. clone ( ) )
25
- }
24
+ LuaType :: Signature ( signature_id) => infer_signature_doc_function (
25
+ db,
26
+ config,
27
+ signature_id. clone ( ) ,
28
+ call_expr. clone ( ) ,
29
+ args_count,
30
+ ) ,
26
31
LuaType :: Def ( type_def_id) => infer_type_doc_function (
27
32
db,
28
33
config,
29
34
type_def_id. clone ( ) ,
30
35
call_expr. clone ( ) ,
31
36
infer_guard,
37
+ args_count,
32
38
) ,
33
39
LuaType :: Ref ( type_ref_id) => infer_type_doc_function (
34
40
db,
35
41
config,
36
42
type_ref_id. clone ( ) ,
37
43
call_expr. clone ( ) ,
38
44
infer_guard,
45
+ args_count,
46
+ ) ,
47
+ LuaType :: Generic ( generic) => infer_generic_type_doc_function (
48
+ db,
49
+ config,
50
+ & generic,
51
+ call_expr. clone ( ) ,
52
+ infer_guard,
53
+ args_count,
39
54
) ,
40
- LuaType :: Generic ( generic) => {
41
- infer_generic_type_doc_function ( db, config, & generic, call_expr. clone ( ) , infer_guard)
42
- }
43
55
_ => return None ,
44
56
}
45
57
}
@@ -49,6 +61,7 @@ fn infer_signature_doc_function(
49
61
config : & mut LuaInferConfig ,
50
62
signature_id : LuaSignatureId ,
51
63
call_expr : LuaCallExpr ,
64
+ args_count : Option < usize > ,
52
65
) -> Option < Arc < LuaFunctionType > > {
53
66
let signature = db. get_signature_index ( ) . get ( & signature_id) ?;
54
67
let overloads = & signature. overloads ;
@@ -89,6 +102,7 @@ fn infer_signature_doc_function(
89
102
call_expr. clone ( ) ,
90
103
signature. is_colon_define ,
91
104
signature. is_generic ( ) ,
105
+ args_count,
92
106
) ?;
93
107
94
108
Some ( doc_func)
@@ -101,12 +115,20 @@ fn infer_type_doc_function(
101
115
type_id : LuaTypeDeclId ,
102
116
call_expr : LuaCallExpr ,
103
117
infer_guard : & mut InferGuard ,
118
+ args_count : Option < usize > ,
104
119
) -> Option < Arc < LuaFunctionType > > {
105
120
infer_guard. check ( & type_id) ?;
106
121
let type_decl = db. get_type_index ( ) . get_type_decl ( & type_id) ?;
107
122
if type_decl. is_alias ( ) {
108
123
let alias_type = type_decl. get_alias_origin ( ) ?;
109
- return infer_call_expr_func ( db, config, call_expr, alias_type. clone ( ) , infer_guard) ;
124
+ return infer_call_expr_func (
125
+ db,
126
+ config,
127
+ call_expr,
128
+ alias_type. clone ( ) ,
129
+ infer_guard,
130
+ args_count,
131
+ ) ;
110
132
} else if type_decl. is_enum ( ) {
111
133
return None ;
112
134
}
@@ -126,7 +148,15 @@ fn infer_type_doc_function(
126
148
}
127
149
}
128
150
129
- let doc_func = resolve_signature ( db, config, overloads, call_expr. clone ( ) , false , false ) ?;
151
+ let doc_func = resolve_signature (
152
+ db,
153
+ config,
154
+ overloads,
155
+ call_expr. clone ( ) ,
156
+ false ,
157
+ false ,
158
+ args_count,
159
+ ) ?;
130
160
Some ( doc_func)
131
161
}
132
162
@@ -136,13 +166,21 @@ fn infer_generic_type_doc_function(
136
166
generic : & LuaGenericType ,
137
167
call_expr : LuaCallExpr ,
138
168
infer_guard : & mut InferGuard ,
169
+ args_count : Option < usize > ,
139
170
) -> Option < Arc < LuaFunctionType > > {
140
171
let type_id = generic. get_base_type_id ( ) ;
141
172
infer_guard. check ( & type_id) ?;
142
173
let type_decl = db. get_type_index ( ) . get_type_decl ( & type_id) ?;
143
174
if type_decl. is_alias ( ) {
144
175
let alias_type = type_decl. get_alias_origin ( ) ?;
145
- return infer_call_expr_func ( db, config, call_expr, alias_type. clone ( ) , infer_guard) ;
176
+ return infer_call_expr_func (
177
+ db,
178
+ config,
179
+ call_expr,
180
+ alias_type. clone ( ) ,
181
+ infer_guard,
182
+ args_count,
183
+ ) ;
146
184
} else if type_decl. is_enum ( ) {
147
185
return None ;
148
186
}
@@ -164,6 +202,6 @@ fn infer_generic_type_doc_function(
164
202
}
165
203
}
166
204
167
- let doc_func = resolve_signature ( db, config, overloads, call_expr. clone ( ) , false , false ) ?;
205
+ let doc_func = resolve_signature ( db, config, overloads, call_expr. clone ( ) , false , false , args_count ) ?;
168
206
Some ( doc_func)
169
207
}
0 commit comments