Coalesce the contents of blocks as well

This commit is contained in:
Chris Wong 2015-04-10 19:00:47 +12:00
parent dfbd4e2880
commit 180becbee4
3 changed files with 10 additions and 10 deletions

View file

@ -1,7 +1,7 @@
#![crate_type = "dylib"] #![crate_type = "dylib"]
#![feature(plugin_registrar, quote)] #![feature(plugin_registrar, quote)]
#![feature(slice_patterns)] #![feature(slice_patterns)]
#![feature(collections, rustc_private)] #![feature(rustc_private)]
extern crate syntax; extern crate syntax;
extern crate rustc; extern crate rustc;

View file

@ -136,10 +136,16 @@ impl<'cx, 'i> Parser<'cx, 'i> {
self.element(sp, name.as_str()); self.element(sp, name.as_str());
}, },
// Block // Block
[TtDelimited(sp, ref d), ..] if d.delim == token::DelimToken::Brace => { [TtDelimited(_, ref d), ..] if d.delim == token::DelimToken::Brace => {
self.shift(1); 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);
}
}, },
// ??? // ???
_ => { _ => {

View file

@ -70,12 +70,6 @@ impl<'cx> Renderer<'cx> {
stmts 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. /// Pushes an statement, flushing the tail buffer in the process.
fn push(&mut self, stmt: P<Stmt>) { fn push(&mut self, stmt: P<Stmt>) {
self.flush(); self.flush();