1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use syntax::ast::*; use syntax::parse::token::Nonterminal; use syntax::ptr::P; use syntax::source_map::Spanned; use syntax::tokenstream::{DelimSpan, TokenTree}; pub trait AstName { fn ast_name(&self) -> String; } include!(concat!(env!("OUT_DIR"), "/ast_names_gen.inc.rs")); impl<T: AstName> AstName for P<T> { fn ast_name(&self) -> String { <T as AstName>::ast_name(self) } } impl<T: AstName> AstName for Spanned<T> { fn ast_name(&self) -> String { self.node.ast_name() } }