diff --git a/crates/oxc_language_server/src/linter/error_with_position.rs b/crates/oxc_language_server/src/linter/error_with_position.rs index 5d8cd7657ecb0..1129605acb5f0 100644 --- a/crates/oxc_language_server/src/linter/error_with_position.rs +++ b/crates/oxc_language_server/src/linter/error_with_position.rs @@ -7,8 +7,6 @@ use tower_lsp_server::lsp_types::{ use oxc_diagnostics::Severity; -use crate::LSP_MAX_INT; - #[derive(Debug, Clone)] pub struct DiagnosticReport { pub diagnostic: lsp_types::Diagnostic, @@ -71,14 +69,17 @@ fn message_with_position_to_lsp_diagnostic( }); let range = related_information.as_ref().map_or( + // Use a zero range as fallback when no span information is available + // This is valid and commonly used for diagnostics without specific location Range { - start: Position { line: LSP_MAX_INT, character: LSP_MAX_INT }, - end: Position { line: LSP_MAX_INT, character: LSP_MAX_INT }, + start: Position { line: 0, character: 0 }, + end: Position { line: 0, character: 0 }, }, |infos: &Vec| { + // Find the first (smallest) range from the related information let mut ret_range = Range { - start: Position { line: LSP_MAX_INT, character: LSP_MAX_INT }, - end: Position { line: LSP_MAX_INT, character: LSP_MAX_INT }, + start: Position { line: u32::MAX, character: u32::MAX }, + end: Position { line: u32::MAX, character: u32::MAX }, }; for info in infos { if cmp_range(&ret_range, &info.location.range) == std::cmp::Ordering::Greater { diff --git a/crates/oxc_language_server/src/main.rs b/crates/oxc_language_server/src/main.rs index 1f60cc0dc0a9a..cb73703ff78b7 100644 --- a/crates/oxc_language_server/src/main.rs +++ b/crates/oxc_language_server/src/main.rs @@ -19,10 +19,6 @@ type ConcurrentHashMap = papaya::HashMap; const OXC_CONFIG_FILE: &str = ".oxlintrc.json"; -// max range for LSP integer is 2^31 - 1 -// https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#baseTypes -const LSP_MAX_INT: u32 = 2u32.pow(31) - 1; - #[tokio::main] async fn main() { env_logger::init(); diff --git a/crates/oxc_language_server/src/snapshots/fixtures_linter_invalid_syntax@debugger.ts.snap b/crates/oxc_language_server/src/snapshots/fixtures_linter_invalid_syntax@debugger.ts.snap index ee3385228e0f5..e91d608054821 100644 --- a/crates/oxc_language_server/src/snapshots/fixtures_linter_invalid_syntax@debugger.ts.snap +++ b/crates/oxc_language_server/src/snapshots/fixtures_linter_invalid_syntax@debugger.ts.snap @@ -8,7 +8,7 @@ file: fixtures/linter/invalid_syntax/debugger.ts code: "" code_description.href: "None" message: "Unexpected token" -range: Range { start: Position { line: 2147483647, character: 2147483647 }, end: Position { line: 2147483647, character: 2147483647 } } +range: Range { start: Position { line: 0, character: 0 }, end: Position { line: 0, character: 0 } } related_information: None severity: Some(Error) source: Some("oxc")