diff options
| author | bors <bors@rust-lang.org> | 2015-10-01 02:38:25 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-10-01 02:38:25 +0000 |
| commit | 031dd9c38153558025b3de97d486541b56275002 (patch) | |
| tree | a7a2adcfb81c3e2093c998b063fc7700a890122b | |
| parent | f5a01589271e1d0f3ea4def28340a40be7a4f9d0 (diff) | |
| parent | 0a2ffa083589e113ad45e64712259c17c391779a (diff) | |
| download | rust-031dd9c38153558025b3de97d486541b56275002.tar.gz rust-031dd9c38153558025b3de97d486541b56275002.zip | |
Auto merge of #28577 - jethrogb:topic/ast-stmt-debug, r=pcwalton
This enables the Debug trait to work on syntax::ast::Stmt.
| -rw-r--r-- | src/libsyntax/ast.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ast_util.rs | 13 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 71261fa457f..45e1d005863 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -65,6 +65,7 @@ use ptr::P; use std::fmt; use std::rc::Rc; +use std::borrow::Cow; use serialize::{Encodable, Decodable, Encoder, Decoder}; /// A name is a part of an identifier, representing a string or gensym. It's @@ -668,7 +669,8 @@ pub type Stmt = Spanned<Stmt_>; impl fmt::Debug for Stmt { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "stmt({}: {})", - ast_util::stmt_id(self), + ast_util::stmt_id(self) + .map_or(Cow::Borrowed("<macro>"),|id|Cow::Owned(id.to_string())), pprust::stmt_to_string(self)) } } diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index 6ab1ad863ff..905a83b050e 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -28,12 +28,12 @@ pub fn path_name_i(idents: &[Ident]) -> String { idents.iter().map(|i| i.to_string()).collect::<Vec<String>>().join("::") } -pub fn stmt_id(s: &Stmt) -> NodeId { +pub fn stmt_id(s: &Stmt) -> Option<NodeId> { match s.node { - StmtDecl(_, id) => id, - StmtExpr(_, id) => id, - StmtSemi(_, id) => id, - StmtMac(..) => panic!("attempted to analyze unexpanded stmt") + StmtDecl(_, id) => Some(id), + StmtExpr(_, id) => Some(id), + StmtSemi(_, id) => Some(id), + StmtMac(..) => None, } } @@ -384,7 +384,8 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> { } fn visit_stmt(&mut self, statement: &Stmt) { - self.operation.visit_id(ast_util::stmt_id(statement)); + self.operation + .visit_id(ast_util::stmt_id(statement).expect("attempted to visit unexpanded stmt")); visit::walk_stmt(self, statement) } |
