File tree Expand file tree Collapse file tree 3 files changed +19
-4
lines changed
apps/language_server/lib/language_server Expand file tree Collapse file tree 3 files changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -359,7 +359,7 @@ defmodule ElixirLS.LanguageServer.Dialyzer do
359
359
360
360
files_to_analyze =
361
361
for module <- modules_to_analyze do
362
- temp_modules [ module ] || :code . which ( module )
362
+ temp_modules [ module ] || Utils . get_beam_file ( module )
363
363
end
364
364
365
365
# Clear warnings for files that changed or need to be re-analyzed
Original file line number Diff line number Diff line change 1
1
defmodule ElixirLS.LanguageServer.Dialyzer.Manifest do
2
- alias ElixirLS.LanguageServer . { Dialyzer , JsonRpc }
2
+ alias ElixirLS.LanguageServer . { Dialyzer , Dialyzer.Utils , JsonRpc }
3
3
import Record
4
4
import Dialyzer.Utils
5
5
@@ -125,7 +125,7 @@ defmodule ElixirLS.LanguageServer.Dialyzer.Manifest do
125
125
|> Path . wildcard ( )
126
126
|> Enum . map ( & pathname_to_module / 1 )
127
127
|> expand_references ( )
128
- |> Enum . map ( & :code . which / 1 )
128
+ |> Enum . map ( & Utils . get_beam_file / 1 )
129
129
|> Enum . filter ( & is_list / 1 )
130
130
131
131
File . mkdir_p! ( Path . dirname ( elixir_plt_path ( ) ) )
Original file line number Diff line number Diff line change 1
1
defmodule ElixirLS.LanguageServer.Dialyzer.Utils do
2
2
@ epoch_gregorian_seconds 62_167_219_200
3
3
4
+ @ spec dialyzable? ( module ( ) ) :: boolean ( )
4
5
def dialyzable? ( module ) do
5
- file = :code . which ( module )
6
+ file = get_beam_file ( module )
6
7
is_list ( file ) and match? ( { :ok , _ } , :dialyzer_utils . get_core_from_beam ( file ) )
7
8
end
8
9
10
+ @ spec get_beam_file ( module ( ) ) :: charlist ( ) | :preloaded | :non_existing | :cover_compiled
11
+ def get_beam_file ( module ) do
12
+ case :code . which ( module ) do
13
+ file when is_list ( file ) ->
14
+ file
15
+
16
+ other ->
17
+ case :code . get_object_code ( module ) do
18
+ { _module , _binary , beam_filename } -> beam_filename
19
+ :error -> other
20
+ end
21
+ end
22
+ end
23
+
9
24
def pathname_to_module ( path ) do
10
25
String . to_atom ( Path . basename ( path , ".beam" ) )
11
26
end
You can’t perform that action at this time.
0 commit comments