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(),
};
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());
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, .. } => {
let err =
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)?;
serde_json::from_slice(data.bytes.as_slice()).map_err(|err| {
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?
let start = err.valid_up_to();
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.
pub fn err_at(
pub fn err_in_text(
&self,
pos: impl Into<ReportPos>,
msg: impl std::fmt::Display,

View File

@ -71,5 +71,5 @@ impl toml {
/// Format the user-facing TOML error message.
fn format_toml_error(data: &Loaded, error: ::toml::de::Error) -> EcoVec<SourceDiagnostic> {
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)
})
.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?
let Some(error) = errors.into_iter().next() else {
// 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 {
@ -433,7 +433,7 @@ fn format_biblatex_error(
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.
@ -480,7 +480,7 @@ impl CslStyle {
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.

View File

@ -19,7 +19,7 @@ use crate::foundations::{
};
use crate::html::{tag, HtmlElem};
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::text::{FontFamily, FontList, LinebreakElem, LocalName, TextElem, TextSize};
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);
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 {
@ -624,7 +627,7 @@ fn format_theme_error(
syntect::LoadingError::ParseSyntax(err, _) => syntax_error_pos(err),
_ => 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.

View File

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