@@ -208,7 +208,7 @@ defmodule ElixirLS.LanguageServer.Server do
208208 { :error , type , msg , send_telemetry } ->
209209 JsonRpc . respond_with_error ( id , type , msg )
210210
211- do_sanity_check ( )
211+ do_sanity_check ( msg || to_string ( type ) )
212212
213213 if send_telemetry do
214214 JsonRpc . telemetry (
@@ -427,7 +427,7 @@ defmodule ElixirLS.LanguageServer.Server do
427427 error_msg = Exception . format_exit ( reason )
428428 JsonRpc . respond_with_error ( id , :internal_error , error_msg )
429429
430- do_sanity_check ( )
430+ do_sanity_check ( error_msg )
431431
432432 JsonRpc . telemetry (
433433 "lsp_request_error" ,
@@ -788,7 +788,7 @@ defmodule ElixirLS.LanguageServer.Server do
788788 "retry" => false
789789 } )
790790
791- do_sanity_check ( )
791+ do_sanity_check ( error_msg )
792792
793793 JsonRpc . telemetry (
794794 "lsp_request_error" ,
@@ -855,7 +855,7 @@ defmodule ElixirLS.LanguageServer.Server do
855855 { :error , type , msg , send_telemetry , state } ->
856856 JsonRpc . respond_with_error ( id , type , msg )
857857
858- do_sanity_check ( )
858+ do_sanity_check ( msg )
859859
860860 if send_telemetry do
861861 JsonRpc . telemetry (
@@ -901,7 +901,7 @@ defmodule ElixirLS.LanguageServer.Server do
901901 error_msg = Exception . format ( kind , payload , stacktrace )
902902 JsonRpc . respond_with_error ( id , :internal_error , error_msg )
903903
904- do_sanity_check ( )
904+ do_sanity_check ( error_msg )
905905
906906 JsonRpc . telemetry (
907907 "lsp_request_error" ,
@@ -2244,8 +2244,12 @@ defmodule ElixirLS.LanguageServer.Server do
22442244 end
22452245 end
22462246
2247- def do_sanity_check ( ) do
2247+ def do_sanity_check ( message \\ nil ) do
22482248 try do
2249+ if message != nil and String . contains? ( message , "UndefinedFunctionError" ) do
2250+ raise "sanity check failed"
2251+ end
2252+
22492253 unless :persistent_term . get ( :language_server_test_mode , false ) do
22502254 unless function_exported? ( ElixirSense , :module_info , 1 ) and
22512255 :persistent_term . get ( :language_server_lib_dir ) ==
@@ -2262,6 +2266,7 @@ defmodule ElixirLS.LanguageServer.Server do
22622266 rescue
22632267 _ ->
22642268 Logger . error ( "Sanity check failed. ElixirLS needs to restart." )
2269+ IO . warn ( "sanity" )
22652270
22662271 Process . sleep ( 2000 )
22672272 System . halt ( 1 )
0 commit comments