From a6c24729491b90da7c6d6ec78b2ea6662e92cb80 Mon Sep 17 00:00:00 2001 From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> Date: Wed, 24 Apr 2024 15:46:08 -0400 Subject: [PATCH] chore(lsp): Print out stack trace if exception occurs in TS request (#23543) Before this PR, there would just be an uninformative "Error occurred" message, after this PR you'll get a stack trace in the LSP output window like this: ```text Error during TS request "$getSupportedCodeFixes": Error: i threw an exception at serverRequest (ext:deno_tsc/99_main_compiler.js:1089:11) ``` --- cli/lsp/tsc.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 3f87c66007..ef096ab8bd 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -4280,6 +4280,20 @@ impl TscRuntime { server_request_fn.call(tc_scope, undefined, &args); if tc_scope.has_caught() && !tc_scope.has_terminated() { + if let Some(stack_trace) = tc_scope.stack_trace() { + lsp_warn!( + "Error during TS request \"{method}\":\n {}", + stack_trace.to_rust_string_lossy(tc_scope), + ); + } else { + lsp_warn!( + "Error during TS request \"{method}\":\n {}", + tc_scope + .exception() + .map(|exc| exc.to_rust_string_lossy(tc_scope)) + .unwrap_or_default(), + ); + } tc_scope.rethrow(); } }