From 8a217e5920985016c2efc37cb5b9827c026cd244 Mon Sep 17 00:00:00 2001 From: Dhruv Manilawala Date: Mon, 14 Jul 2025 19:05:14 +0530 Subject: [PATCH] [ty] Remove `FileLookupError` (#19323) ## Summary This PR removes the `FileLookupError` as it's not really required. The original intention was that this would be returned from the `.file` lookup to the different handlers but we've since moved the logic of "lookup file and add trace message if file unavailable with the reason" under the `file_ok` method which all of the handlers use. --- .../src/server/api/requests/completion.rs | 2 +- .../api/requests/goto_type_definition.rs | 2 +- .../src/server/api/requests/hover.rs | 2 +- .../src/server/api/requests/inlay_hints.rs | 2 +- .../server/api/requests/semantic_tokens.rs | 2 +- .../api/requests/semantic_tokens_range.rs | 2 +- .../src/server/api/requests/signature_help.rs | 2 +- crates/ty_server/src/session.rs | 36 +++++++------------ 8 files changed, 20 insertions(+), 30 deletions(-) diff --git a/crates/ty_server/src/server/api/requests/completion.rs b/crates/ty_server/src/server/api/requests/completion.rs index f100e69f50..5f7b922b68 100644 --- a/crates/ty_server/src/server/api/requests/completion.rs +++ b/crates/ty_server/src/server/api/requests/completion.rs @@ -38,7 +38,7 @@ impl BackgroundDocumentRequestHandler for CompletionRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/server/api/requests/goto_type_definition.rs b/crates/ty_server/src/server/api/requests/goto_type_definition.rs index 55f5cf892c..cb18fca66d 100644 --- a/crates/ty_server/src/server/api/requests/goto_type_definition.rs +++ b/crates/ty_server/src/server/api/requests/goto_type_definition.rs @@ -34,7 +34,7 @@ impl BackgroundDocumentRequestHandler for GotoTypeDefinitionRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/server/api/requests/hover.rs b/crates/ty_server/src/server/api/requests/hover.rs index 1f2cd4b47c..4562930b85 100644 --- a/crates/ty_server/src/server/api/requests/hover.rs +++ b/crates/ty_server/src/server/api/requests/hover.rs @@ -34,7 +34,7 @@ impl BackgroundDocumentRequestHandler for HoverRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/server/api/requests/inlay_hints.rs b/crates/ty_server/src/server/api/requests/inlay_hints.rs index eec6744f97..ed17f24464 100644 --- a/crates/ty_server/src/server/api/requests/inlay_hints.rs +++ b/crates/ty_server/src/server/api/requests/inlay_hints.rs @@ -33,7 +33,7 @@ impl BackgroundDocumentRequestHandler for InlayHintRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/server/api/requests/semantic_tokens.rs b/crates/ty_server/src/server/api/requests/semantic_tokens.rs index 99e52c801c..3871aed50d 100644 --- a/crates/ty_server/src/server/api/requests/semantic_tokens.rs +++ b/crates/ty_server/src/server/api/requests/semantic_tokens.rs @@ -30,7 +30,7 @@ impl BackgroundDocumentRequestHandler for SemanticTokensRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/server/api/requests/semantic_tokens_range.rs b/crates/ty_server/src/server/api/requests/semantic_tokens_range.rs index 0b7f8c02eb..3abaab0120 100644 --- a/crates/ty_server/src/server/api/requests/semantic_tokens_range.rs +++ b/crates/ty_server/src/server/api/requests/semantic_tokens_range.rs @@ -32,7 +32,7 @@ impl BackgroundDocumentRequestHandler for SemanticTokensRangeRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/server/api/requests/signature_help.rs b/crates/ty_server/src/server/api/requests/signature_help.rs index 4c468fb9a5..825c352cf1 100644 --- a/crates/ty_server/src/server/api/requests/signature_help.rs +++ b/crates/ty_server/src/server/api/requests/signature_help.rs @@ -36,7 +36,7 @@ impl BackgroundDocumentRequestHandler for SignatureHelpRequestHandler { return Ok(None); } - let Some(file) = snapshot.file_ok(db) else { + let Some(file) = snapshot.file(db) else { return Ok(None); }; diff --git a/crates/ty_server/src/session.rs b/crates/ty_server/src/session.rs index 2348da88e3..c31ec23884 100644 --- a/crates/ty_server/src/session.rs +++ b/crates/ty_server/src/session.rs @@ -508,35 +508,25 @@ impl DocumentSnapshot { self.document_query_result.as_ref() } - pub(crate) fn file_ok(&self, db: &dyn Db) -> Option { - match self.file(db) { - Ok(file) => Some(file), - Err(err) => { - tracing::debug!("Failed to resolve file: {}", err); - None - } - } - } - - fn file(&self, db: &dyn Db) -> Result { + pub(crate) fn file(&self, db: &dyn Db) -> Option { let document = match self.document() { Ok(document) => document, - Err(err) => return Err(FileLookupError::DocumentQuery(err.clone())), + Err(err) => { + tracing::debug!("Failed to resolve file: {}", err); + return None; + } }; - document - .file(db) - .ok_or_else(|| FileLookupError::NotFound(document.file_path().clone())) + let file = document.file(db); + if file.is_none() { + tracing::debug!( + "Failed to resolve file: file not found for path `{}`", + document.file_path() + ); + } + file } } -#[derive(Debug, thiserror::Error)] -pub(crate) enum FileLookupError { - #[error("file not found for path `{0}`")] - NotFound(AnySystemPath), - #[error(transparent)] - DocumentQuery(DocumentQueryError), -} - /// An immutable snapshot of the current state of [`Session`]. pub(crate) struct SessionSnapshot { projects: Vec,