mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
feat(sourcemap): impl std::fmt::Display for Error (#3902)
This commit is contained in:
parent
77a4a0b77c
commit
01572f037d
1 changed files with 31 additions and 0 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
use std::{error, fmt};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
/// a VLQ string was malformed and data was left over
|
/// a VLQ string was malformed and data was left over
|
||||||
|
|
@ -15,6 +17,35 @@ pub enum Error {
|
||||||
/// a reference to a non existing name was encountered
|
/// a reference to a non existing name was encountered
|
||||||
BadNameReference(u32),
|
BadNameReference(u32),
|
||||||
}
|
}
|
||||||
|
impl fmt::Display for Error {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
match self {
|
||||||
|
Error::VlqLeftover => write!(f, "VLQ string was malformed and data was left over"),
|
||||||
|
Error::VlqNoValues => write!(f, "VLQ string was empty and no values could be decoded"),
|
||||||
|
Error::VlqOverflow => write!(f, "The input encoded a number that didn't fit into i64"),
|
||||||
|
Error::BadJson(err) => write!(f, "JSON parsing error: {err}"),
|
||||||
|
Error::BadSegmentSize(size) => {
|
||||||
|
write!(f, "Mapping segment had an unsupported size of {size}")
|
||||||
|
}
|
||||||
|
Error::BadSourceReference(idx) => {
|
||||||
|
write!(f, "Reference to non-existing source at position {idx}")
|
||||||
|
}
|
||||||
|
Error::BadNameReference(idx) => {
|
||||||
|
write!(f, "Reference to non-existing name at position {idx}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl error::Error for Error {
|
||||||
|
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
|
||||||
|
if let Self::BadJson(err) = self {
|
||||||
|
Some(err)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// The result of decoding.
|
/// The result of decoding.
|
||||||
pub type Result<T> = std::result::Result<T, Error>;
|
pub type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue