diff --git a/lib/next_ls.ex b/lib/next_ls.ex index 1ca3d1cf..22eb7f83 100644 --- a/lib/next_ls.ex +++ b/lib/next_ls.ex @@ -1065,6 +1065,15 @@ defmodule NextLS do {:noreply, lsp} end + def handle_info({ref, {:runtime_failed, _, _} = error}, %{assigns: %{refresh_refs: refs}} = lsp) when is_map_key(refs, ref) do + Process.demonitor(ref, [:flush]) + {{token, msg}, refs} = Map.pop(refs, ref) + + Progress.stop(lsp, token, msg) + send(self(), error) + + {:noreply, assign(lsp, refresh_refs: refs)} + end def handle_info({ref, _resp}, %{assigns: %{refresh_refs: refs}} = lsp) when is_map_key(refs, ref) do Process.demonitor(ref, [:flush]) {{token, msg}, refs} = Map.pop(refs, ref) diff --git a/lib/next_ls/runtime.ex b/lib/next_ls/runtime.ex index dc10482d..27ee3165 100644 --- a/lib/next_ls/runtime.ex +++ b/lib/next_ls/runtime.ex @@ -303,7 +303,7 @@ defmodule NextLS.Runtime do diagnostics {:error, %Mix.Error{message: "Can't continue due to errors on dependencies"}} -> - nil + {:runtime_failed, state.name, {:error, :deps}} unknown -> NextLS.Logger.warning(state.logger, "Unexpected compiler response: #{inspect(unknown)}") @@ -362,6 +362,13 @@ defmodule NextLS.Runtime do {:noreply, state} end + def handle_info({port, {:data, "Unchecked dependencies" <> _ = data}}, %{port: port} = state) do + NextLS.Logger.log(state.logger, data) + + state.on_initialized.({:error, :deps}) + {:noreply, state} + end + def handle_info({port, {:data, data}}, %{port: port} = state) do NextLS.Logger.info(state.logger, data) {:noreply, state}