@@ -208,7 +208,7 @@ defmodule ElixirLS.LanguageServer.Server do
208
208
{ :error , type , msg , send_telemetry } ->
209
209
JsonRpc . respond_with_error ( id , type , msg )
210
210
211
- do_sanity_check ( )
211
+ do_sanity_check ( msg || to_string ( type ) )
212
212
213
213
if send_telemetry do
214
214
JsonRpc . telemetry (
@@ -427,7 +427,7 @@ defmodule ElixirLS.LanguageServer.Server do
427
427
error_msg = Exception . format_exit ( reason )
428
428
JsonRpc . respond_with_error ( id , :internal_error , error_msg )
429
429
430
- do_sanity_check ( )
430
+ do_sanity_check ( error_msg )
431
431
432
432
JsonRpc . telemetry (
433
433
"lsp_request_error" ,
@@ -788,7 +788,7 @@ defmodule ElixirLS.LanguageServer.Server do
788
788
"retry" => false
789
789
} )
790
790
791
- do_sanity_check ( )
791
+ do_sanity_check ( error_msg )
792
792
793
793
JsonRpc . telemetry (
794
794
"lsp_request_error" ,
@@ -855,7 +855,7 @@ defmodule ElixirLS.LanguageServer.Server do
855
855
{ :error , type , msg , send_telemetry , state } ->
856
856
JsonRpc . respond_with_error ( id , type , msg )
857
857
858
- do_sanity_check ( )
858
+ do_sanity_check ( msg )
859
859
860
860
if send_telemetry do
861
861
JsonRpc . telemetry (
@@ -901,7 +901,7 @@ defmodule ElixirLS.LanguageServer.Server do
901
901
error_msg = Exception . format ( kind , payload , stacktrace )
902
902
JsonRpc . respond_with_error ( id , :internal_error , error_msg )
903
903
904
- do_sanity_check ( )
904
+ do_sanity_check ( error_msg )
905
905
906
906
JsonRpc . telemetry (
907
907
"lsp_request_error" ,
@@ -2244,8 +2244,12 @@ defmodule ElixirLS.LanguageServer.Server do
2244
2244
end
2245
2245
end
2246
2246
2247
- def do_sanity_check ( ) do
2247
+ def do_sanity_check ( message \\ nil ) do
2248
2248
try do
2249
+ if message != nil and String . contains? ( message , "UndefinedFunctionError" ) do
2250
+ raise "sanity check failed"
2251
+ end
2252
+
2249
2253
unless :persistent_term . get ( :language_server_test_mode , false ) do
2250
2254
unless function_exported? ( ElixirSense , :module_info , 1 ) and
2251
2255
:persistent_term . get ( :language_server_lib_dir ) ==
@@ -2262,6 +2266,7 @@ defmodule ElixirLS.LanguageServer.Server do
2262
2266
rescue
2263
2267
_ ->
2264
2268
Logger . error ( "Sanity check failed. ElixirLS needs to restart." )
2269
+ IO . warn ( "sanity" )
2265
2270
2266
2271
Process . sleep ( 2000 )
2267
2272
System . halt ( 1 )
0 commit comments