about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorQuietMisdreavus <grey@quietmisdreavus.net>2018-08-02 16:24:20 -0500
committerQuietMisdreavus <grey@quietmisdreavus.net>2018-08-02 16:40:53 -0500
commit7e77d19905ebfcc76c19301587baf2c53acf2fd9 (patch)
tree7b41cbb61ad3b4b03e5a70ff632a5511e20b9917 /src
parentd6a7a3cab0b93b680802876ab490ce25b6b861f4 (diff)
downloadrust-7e77d19905ebfcc76c19301587baf2c53acf2fd9.tar.gz
rust-7e77d19905ebfcc76c19301587baf2c53acf2fd9.zip
preserve order if blocks are between items
Diffstat (limited to 'src')
-rw-r--r--src/librustc_driver/pretty.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/librustc_driver/pretty.rs b/src/librustc_driver/pretty.rs
index 2777593b6bd..9135c9e179f 100644
--- a/src/librustc_driver/pretty.rs
+++ b/src/librustc_driver/pretty.rs
@@ -798,17 +798,17 @@ impl<'a> fold::Folder for ReplaceBodyWithLoop<'a> {
             fold::noop_fold_block(b, self)
         } else {
             b.map(|b| {
-                let old_blocks = self.nested_blocks.replace(vec![]);
+                let mut stmts = vec![];
+                for s in b.stmts {
+                    let old_blocks = self.nested_blocks.replace(vec![]);
 
-                let mut stmts = b.stmts.into_iter()
-                                       .flat_map(|s| self.fold_stmt(s))
-                                       .filter(|s| s.is_item())
-                                       .collect::<Vec<ast::Stmt>>();
+                    stmts.extend(self.fold_stmt(s).into_iter().filter(|s| s.is_item()));
 
-                // we put a Some in there earlier with that replace(), so this is valid
-                let new_blocks = self.nested_blocks.take().unwrap();
-                self.nested_blocks = old_blocks;
-                stmts.extend(new_blocks.into_iter().map(|b| block_to_stmt(b, &self.sess)));
+                    // we put a Some in there earlier with that replace(), so this is valid
+                    let new_blocks = self.nested_blocks.take().unwrap();
+                    self.nested_blocks = old_blocks;
+                    stmts.extend(new_blocks.into_iter().map(|b| block_to_stmt(b, &self.sess)));
+                }
 
                 let mut new_block = ast::Block {
                     stmts,