Implement Display for macro expansion errors

This commit is contained in:
Jonas Schievink 2020-11-26 16:56:22 +01:00
parent db061fb274
commit 2c85db8eb6
2 changed files with 27 additions and 0 deletions

View file

@ -12,6 +12,8 @@ mod subtree_source;
#[cfg(test)]
mod tests;
use std::fmt;
pub use tt::{Delimiter, Punct};
use crate::{
@ -42,6 +44,20 @@ impl From<tt::ExpansionError> for ExpandError {
}
}
impl fmt::Display for ExpandError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ExpandError::NoMatchingRule => f.write_str("no rule matches input tokens"),
ExpandError::UnexpectedToken => f.write_str("unexpected token in input"),
ExpandError::BindingError(e) => f.write_str(e),
ExpandError::ConversionError => f.write_str("could not convert tokens"),
ExpandError::InvalidRepeat => f.write_str("invalid repeat expression"),
ExpandError::ProcMacroError(e) => write!(f, "{}", e),
ExpandError::Other(e) => f.write_str(e),
}
}
}
pub use crate::syntax_bridge::{
ast_to_token_tree, parse_to_token_tree, syntax_node_to_token_tree, token_tree_to_syntax_node,
TokenMap,