refactor: Loaded err_at to err_in_text

This commit is contained in:
Tobias Schmitz 2025-05-19 11:14:55 +02:00
parent 3879d0826a
commit 2e2f646f2a
No known key found for this signature in database
9 changed files with 20 additions and 17 deletions

View File

@ -593,5 +593,5 @@ pub fn format_xml_like_error(
err => err.to_string(), err => err.to_string(),
}; };
data.err_at(pos, msg, err) data.err_in_text(pos, msg, err)
} }

View File

@ -176,12 +176,12 @@ fn format_csv_error(
}) })
.unwrap_or(LineCol::one_based(line, 1).into()); .unwrap_or(LineCol::one_based(line, 1).into());
match err.kind() { match err.kind() {
::csv::ErrorKind::Utf8 { .. } => data.err_at(pos, msg, "file is not valid utf-8"), ::csv::ErrorKind::Utf8 { .. } => data.err_in_text(pos, msg, "file is not valid utf-8"),
::csv::ErrorKind::UnequalLengths { expected_len, len, .. } => { ::csv::ErrorKind::UnequalLengths { expected_len, len, .. } => {
let err = let err =
format!("found {len} instead of {expected_len} fields in line {line}"); format!("found {len} instead of {expected_len} fields in line {line}");
data.err_at(pos, msg, err) data.err_in_text(pos, msg, err)
} }
_ => data.err_at(pos, "failed to parse CSV", err), _ => data.err_in_text(pos, "failed to parse CSV", err),
} }
} }

View File

@ -57,7 +57,7 @@ pub fn json(
let data = source.load(engine.world)?; let data = source.load(engine.world)?;
serde_json::from_slice(data.bytes.as_slice()).map_err(|err| { serde_json::from_slice(data.bytes.as_slice()).map_err(|err| {
let pos = LineCol::one_based(err.line(), err.column()); let pos = LineCol::one_based(err.line(), err.column());
data.err_at(pos, "failed to parse JSON", err) data.err_in_text(pos, "failed to parse JSON", err)
}) })
} }

View File

@ -145,12 +145,12 @@ impl Loaded {
// TODO: should the error even be reported in the file if it's possibly binary? // TODO: should the error even be reported in the file if it's possibly binary?
let start = err.valid_up_to(); let start = err.valid_up_to();
let end = start + err.error_len().unwrap_or(0); let end = start + err.error_len().unwrap_or(0);
self.err_at(start..end, "failed to convert to string", FileError::from(err)) self.err_in_text(start..end, "failed to convert to string", FileError::from(err))
}) })
} }
/// Report an error, possibly in an external file. /// Report an error, possibly in an external file.
pub fn err_at( pub fn err_in_text(
&self, &self,
pos: impl Into<ReportPos>, pos: impl Into<ReportPos>,
msg: impl std::fmt::Display, msg: impl std::fmt::Display,

View File

@ -71,5 +71,5 @@ impl toml {
/// Format the user-facing TOML error message. /// Format the user-facing TOML error message.
fn format_toml_error(data: &Loaded, error: ::toml::de::Error) -> EcoVec<SourceDiagnostic> { fn format_toml_error(data: &Loaded, error: ::toml::de::Error) -> EcoVec<SourceDiagnostic> {
let pos = error.span().map(ReportPos::Range).unwrap_or_default(); let pos = error.span().map(ReportPos::Range).unwrap_or_default();
data.err_at(pos, "failed to parse TOML", error.message()) data.err_in_text(pos, "failed to parse TOML", error.message())
} }

View File

@ -88,5 +88,5 @@ pub fn format_yaml_error(
ReportPos::Full(range, line_col) ReportPos::Full(range, line_col)
}) })
.unwrap_or_default(); .unwrap_or_default();
data.err_at(pos, "failed to parse YAML", error) data.err_in_text(pos, "failed to parse YAML", error)
} }

View File

@ -425,7 +425,7 @@ fn format_biblatex_error(
// TODO: return multiple errors? // TODO: return multiple errors?
let Some(error) = errors.into_iter().next() else { let Some(error) = errors.into_iter().next() else {
// TODO: can this even happen, should we just unwrap? // TODO: can this even happen, should we just unwrap?
return data.err_at(ReportPos::None, "failed to parse BibLaTeX", "???"); return data.err_in_text(ReportPos::None, "failed to parse BibLaTeX", "???");
}; };
let (range, msg) = match error { let (range, msg) = match error {
@ -433,7 +433,7 @@ fn format_biblatex_error(
BibLaTeXError::Type(error) => (error.span, error.kind.to_string()), BibLaTeXError::Type(error) => (error.span, error.kind.to_string()),
}; };
data.err_at(range, "failed to parse BibLaTeX", msg) data.err_in_text(range, "failed to parse BibLaTeX", msg)
} }
/// A loaded CSL style. /// A loaded CSL style.
@ -480,7 +480,7 @@ impl CslStyle {
typst_utils::hash128(&(TypeId::of::<Bytes>(), data)), typst_utils::hash128(&(TypeId::of::<Bytes>(), data)),
))) )))
}) })
.map_err(|err| data.err_at(ReportPos::None, "failed to load CSL style", err)) .map_err(|err| data.err_in_text(ReportPos::None, "failed to load CSL style", err))
} }
/// Get the underlying independent style. /// Get the underlying independent style.

View File

@ -19,7 +19,7 @@ use crate::foundations::{
}; };
use crate::html::{tag, HtmlElem}; use crate::html::{tag, HtmlElem};
use crate::layout::{BlockBody, BlockElem, Em, HAlignment}; use crate::layout::{BlockBody, BlockElem, Em, HAlignment};
use crate::loading::{Loaded, DataSource, LineCol, Load, ReportPos}; use crate::loading::{DataSource, LineCol, Load, Loaded, ReportPos};
use crate::model::{Figurable, ParElem}; use crate::model::{Figurable, ParElem};
use crate::text::{FontFamily, FontList, LinebreakElem, LocalName, TextElem, TextSize}; use crate::text::{FontFamily, FontList, LinebreakElem, LocalName, TextElem, TextSize};
use crate::visualize::Color; use crate::visualize::Color;
@ -568,9 +568,12 @@ impl RawSyntax {
} }
} }
fn format_syntax_error(data: &Loaded, error: ParseSyntaxError) -> EcoVec<SourceDiagnostic> { fn format_syntax_error(
data: &Loaded,
error: ParseSyntaxError,
) -> EcoVec<SourceDiagnostic> {
let pos = syntax_error_pos(&error); let pos = syntax_error_pos(&error);
data.err_at(pos, "failed to parse syntax", error) data.err_in_text(pos, "failed to parse syntax", error)
} }
fn syntax_error_pos(error: &ParseSyntaxError) -> ReportPos { fn syntax_error_pos(error: &ParseSyntaxError) -> ReportPos {
@ -624,7 +627,7 @@ fn format_theme_error(
syntect::LoadingError::ParseSyntax(err, _) => syntax_error_pos(err), syntect::LoadingError::ParseSyntax(err, _) => syntax_error_pos(err),
_ => ReportPos::None, _ => ReportPos::None,
}; };
data.err_at(pos, "failed to parse theme", error) data.err_in_text(pos, "failed to parse theme", error)
} }
/// A highlighted line of raw text. /// A highlighted line of raw text.

View File

@ -137,7 +137,7 @@ fn format_usvg_error(error: usvg::Error) -> EcoString {
usvg::Error::ParsingFailed(error) => { usvg::Error::ParsingFailed(error) => {
format_xml_like_error("SVG", &Loaded::dummy(), error) format_xml_like_error("SVG", &Loaded::dummy(), error)
.pop() .pop()
.unwrap() .expect("at least one error")
.message .message
} }
} }