From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/rls-span/src/compiler.rs | 78 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 vendor/rls-span/src/compiler.rs (limited to 'vendor/rls-span/src/compiler.rs') diff --git a/vendor/rls-span/src/compiler.rs b/vendor/rls-span/src/compiler.rs new file mode 100644 index 000000000..60151a561 --- /dev/null +++ b/vendor/rls-span/src/compiler.rs @@ -0,0 +1,78 @@ +///! These are the structures emitted by the compiler as part of JSON errors. +///! The original source can be found at +///! https://github.com/rust-lang/rust/blob/master/src/librustc_errors/json.rs +use std::path::PathBuf; + +#[cfg(feature = "derive")] +use serde::Deserialize; + +use crate::{Column, OneIndexed, Row, Span}; + +#[cfg_attr(feature = "derive", derive(Deserialize))] +#[cfg_attr(feature = "serialize-rustc", derive(RustcDecodable))] +#[derive(Debug, Clone)] +pub struct DiagnosticSpan { + pub file_name: String, + pub byte_start: u32, + pub byte_end: u32, + /// 1-based. + pub line_start: usize, + pub line_end: usize, + /// 1-based, character offset. + pub column_start: usize, + pub column_end: usize, + /// Is this a "primary" span -- meaning the point, or one of the points, + /// where the error occurred? + pub is_primary: bool, + /// Source text from the start of line_start to the end of line_end. + pub text: Vec, + /// Label that should be placed at this location (if any) + pub label: Option, + /// If we are suggesting a replacement, this will contain text + /// that should be sliced in atop this span. You may prefer to + /// load the fully rendered version from the parent `Diagnostic`, + /// however. + pub suggested_replacement: Option, + /// Macro invocations that created the code at this span, if any. + pub expansion: Option>, +} + +impl DiagnosticSpan { + pub fn rls_span(&self) -> Span { + Span::new( + Row::new(self.line_start as u32), + Row::new(self.line_end as u32), + Column::new(self.column_start as u32), + Column::new(self.column_end as u32), + PathBuf::from(&self.file_name), + ) + } +} + +#[cfg_attr(feature = "derive", derive(Deserialize))] +#[cfg_attr(feature = "serialize-rustc", derive(RustcDecodable))] +#[derive(Debug, Clone)] +pub struct DiagnosticSpanLine { + pub text: String, + + /// 1-based, character offset in self.text. + pub highlight_start: usize, + + pub highlight_end: usize, +} + +#[cfg_attr(feature = "derive", derive(Deserialize))] +#[cfg_attr(feature = "serialize-rustc", derive(RustcDecodable))] +#[derive(Debug, Clone)] +pub struct DiagnosticSpanMacroExpansion { + /// span where macro was applied to generate this code; note that + /// this may itself derive from a macro (if + /// `span.expansion.is_some()`) + pub span: DiagnosticSpan, + + /// name of macro that was applied (e.g., "foo!" or "#[derive(Eq)]") + pub macro_decl_name: String, + + /// span where macro was defined (if known) + pub def_site_span: Option, +} -- cgit v1.2.3