Struct fluent_syntax::parser::ParserError
source · pub struct ParserError {
pub pos: Range<usize>,
pub slice: Option<Range<usize>>,
pub kind: ErrorKind,
}
Expand description
Error containing information about an error encountered by the Fluent Parser.
Errors in Fluent Parser are non-fatal, and the syntax has been designed to allow for strong recovery.
In result ParserError
is designed to point at the slice of
the input that is most likely to be a complete fragment from after
the end of a valid entry, to the start of the next valid entry, with
the invalid syntax in the middle.
§Example
use fluent_syntax::parser;
use fluent_syntax::ast;
let ftl = r#"
key1 = Value 1
g@Rb@ge = #2y ds
key2 = Value 2
"#;
let (resource, errors) = parser::parse_runtime(ftl)
.expect_err("Resource should contain errors.");
assert_eq!(
errors,
vec![
parser::ParserError {
pos: 18..19,
slice: Some(17..35),
kind: parser::ErrorKind::ExpectedToken('=')
}
]
);
assert_eq!(
resource.body[0],
ast::Entry::Message(
ast::Message {
id: ast::Identifier {
name: "key1"
},
value: Some(ast::Pattern {
elements: vec![
ast::PatternElement::TextElement {
value: "Value 1"
},
]
}),
attributes: vec![],
comment: None,
}
),
);
assert_eq!(
resource.body[1],
ast::Entry::Junk {
content: "g@Rb@ge = #2y ds\n\n"
}
);
assert_eq!(
resource.body[2],
ast::Entry::Message(
ast::Message {
id: ast::Identifier {
name: "key2"
},
value: Some(ast::Pattern {
elements: vec![
ast::PatternElement::TextElement {
value: "Value 2"
},
]
}),
attributes: vec![],
comment: None,
}
),
);
The information contained in the ParserError
should allow the tooling
to display rich contextual annotations of the error slice, using
crates such as annotate-snippers
.
Fields§
§pos: Range<usize>
Precise location of where the parser encountered the error.
slice: Option<Range<usize>>
Slice of the input from the end of the last valid entry to the beginning of the next valid entry with the invalid syntax in the middle.
kind: ErrorKind
The type of the error that the parser encountered.
Trait Implementations§
source§impl Clone for ParserError
impl Clone for ParserError
source§fn clone(&self) -> ParserError
fn clone(&self) -> ParserError
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ParserError
impl Debug for ParserError
source§impl Display for ParserError
impl Display for ParserError
source§impl Error for ParserError
impl Error for ParserError
1.30.0 · source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · source§fn description(&self) -> &str
fn description(&self) -> &str
source§impl PartialEq for ParserError
impl PartialEq for ParserError
source§fn eq(&self, other: &ParserError) -> bool
fn eq(&self, other: &ParserError) -> bool
self
and other
values to be equal, and is used
by ==
.