diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 0c8c17b080b..d4932fbb5f1 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -607,7 +607,7 @@ pub enum Stmt_ { /// Expr with trailing semi-colon (may have any type): StmtSemi(P, NodeId), - StmtMac(Mac, MacStmtStyle), + StmtMac(P, MacStmtStyle), } #[deriving(Clone, Copy, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Show)] diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index f2b6f6bfe16..d2d624fa05e 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -672,7 +672,7 @@ fn expand_stmt(s: Stmt, fld: &mut MacroExpander) -> SmallVector> { StmtMac(mac, style) => (mac, style), _ => return expand_non_macro_stmt(s, fld) }; - let expanded_stmt = match expand_mac_invoc(mac, s.span, + let expanded_stmt = match expand_mac_invoc(mac.and_then(|m| m), s.span, |r| r.make_stmt(), mark_stmt, fld) { Some(stmt) => stmt, diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 0803de1bb53..c58901701f5 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -1461,7 +1461,7 @@ pub fn noop_fold_stmt(Spanned {node, span}: Stmt, folder: &mut T) })) } StmtMac(mac, semi) => SmallVector::one(P(Spanned { - node: StmtMac(folder.fold_mac(mac), semi), + node: StmtMac(mac.map(|m| folder.fold_mac(m)), semi), span: span })) } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 94b61ba56d2..15b92b2edbf 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3940,7 +3940,7 @@ impl<'a> Parser<'a> { expr = Some( self.mk_mac_expr(span.lo, span.hi, - m.node)); + m.and_then(|x| x.node))); } _ => { stmts.push(P(Spanned { diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 3d53bd8aadf..623f20bccd2 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1337,7 +1337,7 @@ impl<'a> State<'a> { ast::MacStmtWithBraces => token::Brace, _ => token::Paren }; - try!(self.print_mac(mac, delim)); + try!(self.print_mac(&**mac, delim)); match style { ast::MacStmtWithBraces => {} _ => try!(word(&mut self.s, ";")), diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 4cc93467a7c..714339d0f0a 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -730,7 +730,7 @@ pub fn walk_stmt<'v, V: Visitor<'v>>(visitor: &mut V, statement: &'v Stmt) { StmtExpr(ref expression, _) | StmtSemi(ref expression, _) => { visitor.visit_expr(&**expression) } - StmtMac(ref macro, _) => visitor.visit_mac(macro), + StmtMac(ref macro, _) => visitor.visit_mac(&**macro), } }