mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 17:34:47 -05:00
perf(lsp): check tsc request cancellation before execution (#21447)
This commit is contained in:
parent
28c527c8f5
commit
0a738dc49d
2 changed files with 9 additions and 30 deletions
|
@ -502,7 +502,12 @@ impl DiagnosticsServer {
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
.map_err(|err| {
|
.map_err(|err| {
|
||||||
error!("Error generating TypeScript diagnostics: {}", err);
|
if !token.is_cancelled() {
|
||||||
|
error!(
|
||||||
|
"Error generating TypeScript diagnostics: {}",
|
||||||
|
err
|
||||||
|
);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
|
@ -1615,35 +1620,6 @@ let c: number = "a";
|
||||||
.diagnostics
|
.diagnostics
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn test_cancelled_ts_diagnostics_request() {
|
|
||||||
let temp_dir = TempDir::new();
|
|
||||||
let (snapshot, cache_location) = setup(
|
|
||||||
&temp_dir,
|
|
||||||
&[(
|
|
||||||
"file:///a.ts",
|
|
||||||
r#"export let a: string = 5;"#,
|
|
||||||
1,
|
|
||||||
LanguageId::TypeScript,
|
|
||||||
)],
|
|
||||||
None,
|
|
||||||
);
|
|
||||||
let snapshot = Arc::new(snapshot);
|
|
||||||
let cache =
|
|
||||||
Arc::new(GlobalHttpCache::new(cache_location, RealDenoCacheEnv));
|
|
||||||
let ts_server = TsServer::new(Default::default(), cache);
|
|
||||||
|
|
||||||
let config = mock_config();
|
|
||||||
let token = CancellationToken::new();
|
|
||||||
token.cancel();
|
|
||||||
let diagnostics =
|
|
||||||
generate_ts_diagnostics(snapshot.clone(), &config, &ts_server, token)
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
// should be none because it's cancelled
|
|
||||||
assert_eq!(diagnostics.len(), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_deno_diagnostics_with_import_map() {
|
async fn test_deno_diagnostics_with_import_map() {
|
||||||
let temp_dir = TempDir::new();
|
let temp_dir = TempDir::new();
|
||||||
|
|
|
@ -4414,6 +4414,9 @@ fn request(
|
||||||
request: TscRequest,
|
request: TscRequest,
|
||||||
token: CancellationToken,
|
token: CancellationToken,
|
||||||
) -> Result<Value, AnyError> {
|
) -> Result<Value, AnyError> {
|
||||||
|
if token.is_cancelled() {
|
||||||
|
return Err(anyhow!("Operation was cancelled."));
|
||||||
|
}
|
||||||
let (performance, id) = {
|
let (performance, id) = {
|
||||||
let op_state = runtime.op_state();
|
let op_state = runtime.op_state();
|
||||||
let mut op_state = op_state.borrow_mut();
|
let mut op_state = op_state.borrow_mut();
|
||||||
|
|
Loading…
Add table
Reference in a new issue