Skip to content

Commit 4ad4855

Browse files
committed
fix: handle aliases injected by macros
1 parent a827a6b commit 4ad4855

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

lib/next_ls/runtime/sidecar.ex

+23-17
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,29 @@ defmodule NextLS.Runtime.Sidecar do
3131
end
3232

3333
def handle_info({{:tracer, :reference, :alias}, payload}, state) do
34-
if payload.meta[:end_of_expression] do
35-
start = %{line: payload.meta[:line], col: payload.meta[:column]}
36-
stop = %{line: payload.meta[:end_of_expression][:line], col: payload.meta[:end_of_expression][:column]}
37-
38-
{start, stop} =
39-
Aliases.extract_alias_range(
40-
File.read!(payload.file),
41-
{start, stop},
42-
payload.identifier |> Macro.to_string() |> String.to_atom()
43-
)
44-
45-
payload =
46-
payload
47-
|> Map.put(:identifier, payload.module)
48-
|> Map.put(:range, %{start: start, stop: stop})
49-
50-
DB.insert_reference(state.db, payload)
34+
# TODO: in the next version of elixir, generated code will not have :column metadata, so we can tell if the alias is from
35+
# a macro. For now, just try and rescue
36+
try do
37+
if payload.meta[:end_of_expression] do
38+
start = %{line: payload.meta[:line], col: payload.meta[:column]}
39+
stop = %{line: payload.meta[:end_of_expression][:line], col: payload.meta[:end_of_expression][:column]}
40+
41+
{start, stop} =
42+
Aliases.extract_alias_range(
43+
File.read!(payload.file),
44+
{start, stop},
45+
payload.identifier |> Macro.to_string() |> String.to_atom()
46+
)
47+
48+
payload =
49+
payload
50+
|> Map.put(:identifier, payload.module)
51+
|> Map.put(:range, %{start: start, stop: stop})
52+
53+
DB.insert_reference(state.db, payload)
54+
end
55+
rescue
56+
_ -> :ok
5157
end
5258

5359
{:noreply, state}

0 commit comments

Comments
 (0)