Merge pull request #2072 from matthew-mcallister/mod-inner-skip

Handle `#![rustfmt_skip]` in more places
This commit is contained in:
Nick Cameron 2017-10-27 00:55:48 +05:30 committed by GitHub
commit 36ed1566ea
5 changed files with 36 additions and 79 deletions

View file

@ -137,7 +137,7 @@ impl FormattingError {
.count();
(self.line_buffer.len() - trailing_ws_len, trailing_ws_len)
}
_ => (0, 0), // unreachable
_ => unreachable!(),
}
}
}
@ -319,11 +319,15 @@ where
let filemap = visitor.codemap.lookup_char_pos(module.inner.lo()).file;
// Format inner attributes if available.
if !krate.attrs.is_empty() && path == main_file {
visitor.visit_attrs(&krate.attrs, ast::AttrStyle::Inner);
if visitor.visit_attrs(&krate.attrs, ast::AttrStyle::Inner) {
visitor.push_rewrite(module.inner, None);
} else {
visitor.format_separate_mod(module, &*filemap);
}
} else {
visitor.last_pos = filemap.start_pos;
}
visitor.format_separate_mod(module, &*filemap);
visitor.format_separate_mod(module, &*filemap);
};
has_diff |= after_file(path_str, &mut visitor.buffer)?;

View file

@ -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);

View file

@ -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() {}

View file

@ -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(

3
tests/target/skip_mod.rs Normal file
View file

@ -0,0 +1,3 @@
#![rustfmt_skip]
use a :: b
;