diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs index f3a9574..beb9243 100644 --- a/maud_macros/src/lib.rs +++ b/maud_macros/src/lib.rs @@ -1,7 +1,7 @@ #![crate_type = "dylib"] #![feature(plugin_registrar, quote)] #![feature(slice_patterns)] -#![feature(collections, rustc_private)] +#![feature(rustc_private)] extern crate syntax; extern crate rustc; diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs index 165a130..b9ab877 100644 --- a/maud_macros/src/parse.rs +++ b/maud_macros/src/parse.rs @@ -136,10 +136,16 @@ impl<'cx, 'i> Parser<'cx, 'i> { self.element(sp, name.as_str()); }, // Block - [TtDelimited(sp, ref d), ..] if d.delim == token::DelimToken::Brace => { + [TtDelimited(_, ref d), ..] if d.delim == token::DelimToken::Brace => { self.shift(1); - let stmts = self.block(sp, &d.tts); - self.render.push_stmts(stmts); + { + // Parse the contents of the block, emitting the + // result inline + let mut i = &*d.tts; + mem::swap(&mut self.input, &mut i); + self.markups(); + mem::swap(&mut self.input, &mut i); + } }, // ??? _ => { diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs index 7da3961..5f9fba6 100644 --- a/maud_macros/src/render.rs +++ b/maud_macros/src/render.rs @@ -70,12 +70,6 @@ impl<'cx> Renderer<'cx> { stmts } - /// Appends the list of statements to the output. - pub fn push_stmts(&mut self, mut stmts: Vec<P<Stmt>>) { - self.flush(); - self.stmts.append(&mut stmts); - } - /// Pushes an statement, flushing the tail buffer in the process. fn push(&mut self, stmt: P<Stmt>) { self.flush();