@@ -201,24 +201,41 @@ defmodule ElixirLS.LanguageServer.Tracer do
201
201
202
202
def trace ( { kind , meta , module , name , arity } , % Macro.Env { } = env )
203
203
when kind in [ :imported_function , :imported_macro , :remote_function , :remote_macro ] do
204
- register_call ( meta , module , name , arity , env )
204
+ register_call ( meta , module , name , arity , kind , env )
205
+ end
206
+
207
+ def trace ( { :imported_quoted , meta , module , name , arities } , env ) do
208
+ for arity <- arities do
209
+ register_call ( meta , module , name , arity , :imported_quoted , env )
210
+ end
211
+
212
+ :ok
205
213
end
206
214
207
215
def trace ( { kind , meta , name , arity } , % Macro.Env { } = env )
208
216
when kind in [ :local_function , :local_macro ] do
209
- register_call ( meta , env . module , name , arity , env )
217
+ register_call ( meta , env . module , name , arity , kind , env )
210
218
end
211
219
212
220
def trace ( { :alias_reference , meta , module } , % Macro.Env { } = env ) do
213
- register_call ( meta , module , nil , nil , env )
221
+ register_call ( meta , module , nil , nil , :alias_reference , env )
214
222
end
215
223
216
224
def trace ( { :alias , meta , module , _as , _opts } , % Macro.Env { } = env ) do
217
- register_call ( meta , module , nil , nil , env )
225
+ register_call ( meta , module , nil , nil , :alias , env )
218
226
end
219
227
220
228
def trace ( { kind , meta , module , _opts } , % Macro.Env { } = env ) when kind in [ :import , :require ] do
221
- register_call ( meta , module , nil , nil , env )
229
+ register_call ( meta , module , nil , nil , kind , env )
230
+ end
231
+
232
+ def trace ( { :struct_expansion , meta , name , _assocs } , % Macro.Env { } = env ) do
233
+ register_call ( meta , name , nil , nil , :struct_expansion , env )
234
+ end
235
+
236
+ def trace ( { :alias_expansion , meta , as , alias } , % Macro.Env { } = env ) do
237
+ register_call ( meta , as , nil , nil , :alias_expansion_as , env )
238
+ register_call ( meta , alias , nil , nil , :alias_expansion , env )
222
239
end
223
240
224
241
def trace ( _trace , _env ) do
@@ -266,22 +283,26 @@ defmodule ElixirLS.LanguageServer.Tracer do
266
283
}
267
284
end
268
285
269
- defp register_call ( meta , module , name , arity , env ) do
286
+ defp register_call ( meta , module , name , arity , kind , env ) do
270
287
if in_project_sources? ( env . file ) do
271
- do_register_call ( meta , module , name , arity , env )
288
+ do_register_call ( meta , module , name , arity , kind , env )
272
289
end
273
290
274
291
:ok
275
292
end
276
293
277
- defp do_register_call ( meta , module , name , arity , env ) do
294
+ defp do_register_call ( meta , module , name , arity , kind , env ) do
278
295
callee = { module , name , arity }
279
296
280
297
line = meta [ :line ]
281
298
column = meta [ :column ]
299
+
282
300
# TODO meta can have last or maybe other?
301
+ # last
302
+ # end_of_expression
303
+ # closing
283
304
284
- :ets . insert ( table_name ( :calls ) , { { callee , env . file , line , column } , :ok } )
305
+ :ets . insert ( table_name ( :calls ) , { { callee , env . file , line , column } , kind } )
285
306
end
286
307
287
308
def get_trace do
@@ -291,12 +312,13 @@ defmodule ElixirLS.LanguageServer.Tracer do
291
312
292
313
try do
293
314
:ets . tab2list ( table )
294
- |> Enum . map ( fn { { callee , file , line , column } , _ } ->
315
+ |> Enum . map ( fn { { callee , file , line , column } , kind } ->
295
316
% {
296
317
callee: callee ,
297
318
file: file ,
298
319
line: line ,
299
- column: column
320
+ column: column ,
321
+ kind: kind
300
322
}
301
323
end )
302
324
|> Enum . group_by ( fn % { callee: callee } -> callee end )
0 commit comments