Skip to content

Commit f029db7

Browse files
committed
report invalid encoding
1 parent 9e35859 commit f029db7

File tree

1 file changed

+40
-3
lines changed
  • apps/language_server/lib/language_server

1 file changed

+40
-3
lines changed

apps/language_server/lib/language_server/server.ex

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,19 @@ defmodule ElixirLS.LanguageServer.Server do
560560

561561
state
562562
else
563+
unless String.valid?(text) do
564+
JsonRpc.telemetry(
565+
"lsp_server_error",
566+
%{
567+
"elixir_ls.lsp_process" => inspect(__MODULE__),
568+
"elixir_ls.lsp_server_error" => "File not valid on open:\n#{inspect(text)}"
569+
},
570+
%{}
571+
)
572+
573+
Logger.error("File not valid on open:\n#{inspect(text)}")
574+
end
575+
563576
source_file = %SourceFile{text: text, version: version}
564577

565578
state = put_in(state.source_files[uri], source_file)
@@ -603,8 +616,27 @@ defmodule ElixirLS.LanguageServer.Server do
603616
else
604617
state =
605618
update_in(state.source_files[uri], fn source_file ->
606-
%SourceFile{source_file | version: version, dirty?: true}
607-
|> SourceFile.apply_content_changes(content_changes)
619+
file =
620+
%SourceFile{source_file | version: version, dirty?: true}
621+
|> SourceFile.apply_content_changes(content_changes)
622+
623+
unless String.valid?(file.text) do
624+
JsonRpc.telemetry(
625+
"lsp_server_error",
626+
%{
627+
"elixir_ls.lsp_process" => inspect(__MODULE__),
628+
"elixir_ls.lsp_server_error" =>
629+
"File not valid after: #{inspect(content_changes)} text was:\n#{inspect(source_file.text)}"
630+
},
631+
%{}
632+
)
633+
634+
Logger.error(
635+
"File not valid after: #{inspect(content_changes)} text was:\n#{inspect(source_file.text)}"
636+
)
637+
end
638+
639+
file
608640
end)
609641

610642
# trigger parse with debounce
@@ -1446,7 +1478,12 @@ defmodule ElixirLS.LanguageServer.Server do
14461478
defp safely_read_file(file) do
14471479
case File.read(file) do
14481480
{:ok, text} ->
1449-
text
1481+
if String.valid?(text) do
1482+
text
1483+
else
1484+
Logger.warning("Invalid encoding in #{file}")
1485+
nil
1486+
end
14501487

14511488
{:error, reason} ->
14521489
if reason != :enoent do

0 commit comments

Comments
 (0)