mirror of
https://codeberg.org/icewind/php-literal-parser.git
synced 2026-06-03 18:44:07 +02:00
fix unexpected token error when there is 1 possible token
This commit is contained in:
parent
81866da439
commit
7239611c2a
1 changed files with 17 additions and 11 deletions
28
src/error.rs
28
src/error.rs
|
|
@ -26,10 +26,12 @@ pub enum ParseError {
|
||||||
UnexpectedArrayKey(ArrayKeyError),
|
UnexpectedArrayKey(ArrayKeyError),
|
||||||
#[error("Trailing characters after parsing")]
|
#[error("Trailing characters after parsing")]
|
||||||
#[diagnostic(code(php_object_parser::trailing))]
|
#[diagnostic(code(php_object_parser::trailing))]
|
||||||
|
/// Trailing characters after parsing
|
||||||
TrailingCharacters,
|
TrailingCharacters,
|
||||||
#[error("{0}")]
|
#[error("{0}")]
|
||||||
#[diagnostic(code(php_object_parser::other))]
|
#[diagnostic(code(php_object_parser::serde))]
|
||||||
Custom(String),
|
/// Error while populating serde type
|
||||||
|
Serde(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl serde::de::Error for ParseError {
|
impl serde::de::Error for ParseError {
|
||||||
|
|
@ -37,7 +39,7 @@ impl serde::de::Error for ParseError {
|
||||||
where
|
where
|
||||||
T: Display,
|
T: Display,
|
||||||
{
|
{
|
||||||
ParseError::Custom(msg.to_string())
|
ParseError::Serde(msg.to_string())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,14 +92,18 @@ impl From<&[Token]> for TokenList {
|
||||||
|
|
||||||
impl Display for TokenList {
|
impl Display for TokenList {
|
||||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||||
if !self.0.is_empty() {
|
match self.0.len() {
|
||||||
let mut tokens = self.0[0..self.0.len() - 1].iter();
|
0 => {}
|
||||||
write!(f, "{}", tokens.next().unwrap())?;
|
1 => write!(f, "{}", self.0[0])?,
|
||||||
for token in tokens {
|
_ => {
|
||||||
write!(f, ", {}", token)?;
|
let mut tokens = self.0[0..self.0.len() - 1].iter();
|
||||||
}
|
write!(f, "{}", tokens.next().unwrap())?;
|
||||||
if self.0.len() > 1 {
|
for token in tokens {
|
||||||
write!(f, " or {}", self.0.last().unwrap())?;
|
write!(f, ", {}", token)?;
|
||||||
|
}
|
||||||
|
if self.0.len() > 1 {
|
||||||
|
write!(f, " or {}", self.0.last().unwrap())?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue