1
1
defmodule NextLSPrivate.Tracer do
2
- def trace ( :start , env ) do
2
+ def trace ( :start , _env ) do
3
+ :ok
4
+ end
5
+
6
+ def trace ( { :alias_reference , meta , module } , env ) do
7
+ parent = parent_pid ( )
8
+
9
+ alias_map = Map . new ( env . aliases , fn { alias , mod } -> { mod , alias } end )
10
+
11
+ Process . send (
12
+ parent ,
13
+ { { :tracer , :reference } ,
14
+ % {
15
+ meta: meta ,
16
+ identifier: Map . get ( alias_map , module , module ) ,
17
+ file: env . file ,
18
+ type: :alias ,
19
+ module: module
20
+ } } ,
21
+ [ ]
22
+ )
23
+
3
24
:ok
4
25
end
5
26
6
27
def trace ( { type , meta , module , func , arity } , env )
7
28
when type in [ :remote_function , :remote_macro , :imported_macro ] and
8
29
module not in [ :elixir_def , :elixir_utils , Kernel , Enum ] do
9
- parent = "NEXTLS_PARENT_PID" |> System . get_env ( ) |> Base . decode64! ( ) |> :erlang . binary_to_term ( )
30
+ parent = parent_pid ( )
10
31
11
32
if type == :remote_macro && meta [ :closing ] [ :line ] != meta [ :line ] do
12
33
# this is the case that a macro is getting expanded from inside
@@ -15,12 +36,13 @@ defmodule NextLSPrivate.Tracer do
15
36
else
16
37
Process . send (
17
38
parent ,
18
- { { :tracer , :local_function } ,
39
+ { { :tracer , :reference } ,
19
40
% {
20
41
meta: meta ,
21
- func : func ,
42
+ identifier : func ,
22
43
arity: arity ,
23
44
file: env . file ,
45
+ type: :function ,
24
46
module: module
25
47
} } ,
26
48
[ ]
@@ -31,16 +53,17 @@ defmodule NextLSPrivate.Tracer do
31
53
end
32
54
33
55
def trace ( { type , meta , func , arity } , env ) when type in [ :local_function , :local_macro ] do
34
- parent = "NEXTLS_PARENT_PID" |> System . get_env ( ) |> Base . decode64! ( ) |> :erlang . binary_to_term ( )
56
+ parent = parent_pid ( )
35
57
36
58
Process . send (
37
59
parent ,
38
- { { :tracer , :local_function } ,
60
+ { { :tracer , :reference } ,
39
61
% {
40
62
meta: meta ,
41
- func : func ,
63
+ identifier : func ,
42
64
arity: arity ,
43
65
file: env . file ,
66
+ type: :function ,
44
67
module: env . module
45
68
} } ,
46
69
[ ]
@@ -50,7 +73,7 @@ defmodule NextLSPrivate.Tracer do
50
73
end
51
74
52
75
def trace ( { :on_module , bytecode , _ } , env ) do
53
- parent = "NEXTLS_PARENT_PID" |> System . get_env ( ) |> Base . decode64! ( ) |> :erlang . binary_to_term ( )
76
+ parent = parent_pid ( )
54
77
55
78
defs = Module . definitions_in ( env . module )
56
79
@@ -82,6 +105,10 @@ defmodule NextLSPrivate.Tracer do
82
105
def trace ( _event , _env ) do
83
106
:ok
84
107
end
108
+
109
+ defp parent_pid ( ) do
110
+ "NEXTLS_PARENT_PID" |> System . get_env ( ) |> Base . decode64! ( ) |> :erlang . binary_to_term ( )
111
+ end
85
112
end
86
113
87
114
defmodule :_next_ls_private_compiler do
0 commit comments