diff --git a/src/visitor.rs b/src/visitor.rs index 76b23f79285e..d76677949a4b 100644 --- a/src/visitor.rs +++ b/src/visitor.rs @@ -150,8 +150,17 @@ impl<'a> FmtVisitor<'a> { } // Format inner attributes if available. - if let Some(attrs) = inner_attrs { - self.visit_attrs(attrs, ast::AttrStyle::Inner); + let skip_rewrite = if let Some(attrs) = inner_attrs { + self.visit_attrs(attrs, ast::AttrStyle::Inner) + } else { + false + }; + + if skip_rewrite { + self.push_rewrite(b.span, None); + self.close_block(false); + self.last_pos = source!(self, b.span).hi(); + return; } self.walk_block_stmts(b); diff --git a/tests/source/skip.rs b/tests/source/skip.rs deleted file mode 100644 index d28ccd77de02..000000000000 --- a/tests/source/skip.rs +++ /dev/null @@ -1,73 +0,0 @@ -// Test the skip attribute works - -#[rustfmt_skip] -fn foo() { badly; formatted; stuff -; } - -#[rustfmt_skip] -trait Foo -{ -fn foo( -); -} - -impl LateLintPass for UsedUnderscoreBinding { - #[cfg_attr(rustfmt, rustfmt_skip)] - fn check_expr() { // comment - } -} - -fn issue1346() { - #[cfg_attr(rustfmt, rustfmt_skip)] - Box::new(self.inner.call(req).then(move |result| { - match result { - Ok(resp) => Box::new(future::done(Ok(resp))), - Err(e) => { - try_error!(clo_stderr, "{}", e); - Box::new(future::err(e)) - } - } - })) -} - -fn skip_on_statements() { - // Semi - #[cfg_attr(rustfmt, rustfmt_skip)] - foo( - 1, 2, 3, 4, - 1, 2, - 1, 2, 3, - ); - - // Local - #[cfg_attr(rustfmt, rustfmt_skip)] - let x = foo( a, b , c); - - // Item - #[cfg_attr(rustfmt, rustfmt_skip)] - use foobar ; - - // Mac - #[cfg_attr(rustfmt, rustfmt_skip)] - vec![ - 1, 2, 3, 4, - 1, 2, 3, 4, - 1, 2, 3, 4, - 1, 2, 3, - 1, - 1, 2, - 1, - ]; - - // Expr - #[cfg_attr(rustfmt, rustfmt_skip)] - foo( a, b , c) -} - -// Check that the skip attribute applies to other attributes. -#[rustfmt_skip] -#[cfg -( a , b -)] -fn -main() {} diff --git a/tests/target/skip.rs b/tests/target/skip.rs index d28ccd77de02..28897ade56fb 100644 --- a/tests/target/skip.rs +++ b/tests/target/skip.rs @@ -31,6 +31,20 @@ fn issue1346() { } fn skip_on_statements() { + // Outside block + #[rustfmt_skip] + { + foo; bar; + // junk + } + + { + // Inside block + #![rustfmt_skip] + foo; bar; + // junk + } + // Semi #[cfg_attr(rustfmt, rustfmt_skip)] foo(