Struct fluent_syntax::parser::ParserError [−][src]
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
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Auto Trait Implementations
impl RefUnwindSafe for ParserError
impl Send for ParserError
impl Sync for ParserError
impl Unpin for ParserError
impl UnwindSafe for ParserError
Blanket Implementations
Mutably borrows from an owned value. Read more