fix unexpected token error when there is 1 possible token

This commit is contained in:
Robin Appelman 2021-08-29 21:14:56 +02:00
commit 7239611c2a

View file

@ -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(())