Skip to content

Commit 7e77d19

Browse files
preserve order if blocks are between items
1 parent d6a7a3c commit 7e77d19

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/librustc_driver/pretty.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -798,17 +798,17 @@ impl<'a> fold::Folder for ReplaceBodyWithLoop<'a> {
798798
fold::noop_fold_block(b, self)
799799
} else {
800800
b.map(|b| {
801-
let old_blocks = self.nested_blocks.replace(vec![]);
801+
let mut stmts = vec![];
802+
for s in b.stmts {
803+
let old_blocks = self.nested_blocks.replace(vec![]);
802804

803-
let mut stmts = b.stmts.into_iter()
804-
.flat_map(|s| self.fold_stmt(s))
805-
.filter(|s| s.is_item())
806-
.collect::<Vec<ast::Stmt>>();
805+
stmts.extend(self.fold_stmt(s).into_iter().filter(|s| s.is_item()));
807806

808-
// we put a Some in there earlier with that replace(), so this is valid
809-
let new_blocks = self.nested_blocks.take().unwrap();
810-
self.nested_blocks = old_blocks;
811-
stmts.extend(new_blocks.into_iter().map(|b| block_to_stmt(b, &self.sess)));
807+
// we put a Some in there earlier with that replace(), so this is valid
808+
let new_blocks = self.nested_blocks.take().unwrap();
809+
self.nested_blocks = old_blocks;
810+
stmts.extend(new_blocks.into_iter().map(|b| block_to_stmt(b, &self.sess)));
811+
}
812812

813813
let mut new_block = ast::Block {
814814
stmts,

0 commit comments

Comments
 (0)