Skip to content

Commit 0214337

Browse files
authored
Remove dependency on forms (#596)
* Remove forms dependency * Also remove dependency from mix.lock Co-authored-by: Awlex <no thank you>
1 parent 879aed9 commit 0214337

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

apps/language_server/lib/language_server/dialyzer/utils.ex

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,29 @@ defmodule ElixirLS.LanguageServer.Dialyzer.Utils do
4949

5050
defp module_references(mod) do
5151
try do
52-
forms = :forms.read(mod)
53-
54-
calls =
55-
:forms.filter(
56-
fn
57-
{:call, _, {:remote, _, {:atom, _, _}, _}, _} -> true
58-
_ -> false
59-
end,
60-
forms
61-
)
62-
63-
for {:call, _, {:remote, _, {:atom, _, module}, _}, _} <- calls, uniq: true, do: module
52+
for form <- read_forms(mod),
53+
{:call, _, {:remote, _, {:atom, _, module}, _}, _} <- form,
54+
uniq: true,
55+
do: module
6456
rescue
6557
_ -> []
6658
catch
6759
_ -> []
6860
end
6961
end
62+
63+
# Read the Erlang abstract forms from the specified Module
64+
# compiled using the -debug_info compile option
65+
defp read_forms(module) do
66+
case :beam_lib.chunks(:code.which(module), [:abstract_code]) do
67+
{:ok, {^module, [{:abstract_code, {:raw_abstract_v1, forms}}]}} ->
68+
forms
69+
70+
{:ok, {:no_debug_info, _}} ->
71+
throw({:forms_not_found, module})
72+
73+
{:error, :beam_lib, {:file_error, _, :enoent}} ->
74+
throw({:module_not_found, module})
75+
end
76+
end
7077
end

apps/language_server/mix.exs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ defmodule ElixirLS.LanguageServer.Mixfile do
2828
[
2929
{:elixir_ls_utils, in_umbrella: true},
3030
{:elixir_sense, github: "elixir-lsp/elixir_sense"},
31-
{:forms, "~> 0.0"},
3231
{:erl2ex, github: "dazuma/erl2ex"},
3332
{:dialyxir, "~> 1.0", runtime: false},
3433
{:jason_vendored, github: "elixir-lsp/jason", branch: "vendored"},

mix.lock

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
"elixir_sense": {:git, "https://github.com/elixir-lsp/elixir_sense.git", "4a857f2c262b9f8ac2d72e31f4806cecc740192a", []},
55
"erl2ex": {:git, "https://github.com/dazuma/erl2ex.git", "244c2d9ed5805ef4855a491d8616b8842fef7ca4", []},
66
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
7-
"forms": {:hex, :forms, "0.0.1", "45f3b10b6f859f95f2c2c1a1de244d63855296d55ed8e93eb0dd116b3e86c4a6", [:rebar3], [], "hexpm", "530f63ed8ed5a171f744fc75bd69cb2e36496899d19dbef48101b4636b795868"},
87
"getopt": {:hex, :getopt, "1.0.1", "c73a9fa687b217f2ff79f68a3b637711bb1936e712b521d8ce466b29cbf7808a", [:rebar3], [], "hexpm", "53e1ab83b9ceb65c9672d3e7a35b8092e9bdc9b3ee80721471a161c10c59959c"},
98
"jason_vendored": {:git, "https://github.com/elixir-lsp/jason.git", "ee95ca80cd67b3a499a14f469536140935eb4483", [branch: "vendored"]},
109
"mix_task_archive_deps": {:git, "https://github.com/JakeBecker/mix_task_archive_deps.git", "50301a4314e3cc1104f77a8208d5b66ee382970b", []},

0 commit comments

Comments
 (0)