diff options
| author | QuietMisdreavus <grey@quietmisdreavus.net> | 2018-08-02 16:24:20 -0500 |
|---|---|---|
| committer | QuietMisdreavus <grey@quietmisdreavus.net> | 2018-08-02 16:40:53 -0500 |
| commit | 7e77d19905ebfcc76c19301587baf2c53acf2fd9 (patch) | |
| tree | 7b41cbb61ad3b4b03e5a70ff632a5511e20b9917 /src | |
| parent | d6a7a3cab0b93b680802876ab490ce25b6b861f4 (diff) | |
| download | rust-7e77d19905ebfcc76c19301587baf2c53acf2fd9.tar.gz rust-7e77d19905ebfcc76c19301587baf2c53acf2fd9.zip | |
preserve order if blocks are between items
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_driver/pretty.rs | 18 |
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, |
