diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs index cd5b3de..8a450eb 100644 --- a/maud_macros/src/lib.rs +++ b/maud_macros/src/lib.rs @@ -1,6 +1,6 @@ #![crate_type = "dylib"] #![feature(plugin_registrar, quote)] -#![feature(collections, core, rustc_private)] +#![feature(collections, rustc_private)] extern crate syntax; extern crate rustc; diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs index 84d674e..261ec3a 100644 --- a/maud_macros/src/parse.rs +++ b/maud_macros/src/parse.rs @@ -1,3 +1,4 @@ +use std::mem; use syntax::ast::{Expr, ExprParen, Lit, Stmt, TokenTree, TtDelimited, TtToken}; use syntax::codemap::Span; use syntax::ext::base::ExtCtxt; @@ -193,10 +194,10 @@ impl<'cx, 's, 'i> Parser<'cx, 's, 'i> { self.render.attribute_start(name.as_str()); { // Parse a value under an attribute context - let old_in_attr = self.in_attr; - self.in_attr = true; + let in_attr = true; + mem::swap(&mut self.in_attr, &mut in_attr); self.markup(); - self.in_attr = old_in_attr; + mem::swap(&mut self.in_attr, &mut in_attr); } self.render.attribute_end(); }, @@ -229,7 +230,7 @@ impl<'cx, 's, 'i> Parser<'cx, 's, 'i> { in_attr: self.in_attr, input: tts, span: sp, - render: Renderer::new(self.render.cx), + render: self.render.fork(), }; parse.markups(); parse.into_render().into_stmts()