check non-inline modules, ignore all macros
This commit is contained in:
parent
88143ac295
commit
493a23e957
@ -11,7 +11,7 @@
|
||||
declare_clippy_lint! {
|
||||
/// ### What it does
|
||||
///
|
||||
/// Checks for blocks which are indented beyond a certain threshold.
|
||||
/// Checks for blocks which are nested beyond a certain threshold.
|
||||
///
|
||||
/// ### Why is this bad?
|
||||
///
|
||||
@ -106,6 +106,11 @@ fn check_indent(&self, span: Span) -> bool {
|
||||
|
||||
impl<'conf, 'cx> Visitor<'_> for NestingVisitor<'conf, 'cx> {
|
||||
fn visit_block(&mut self, block: &Block) {
|
||||
// TODO: Probably not necessary, since any block would already be ignored by the check in visit_item
|
||||
if block.span.from_expansion() {
|
||||
return;
|
||||
}
|
||||
|
||||
self.nest_level += 1;
|
||||
|
||||
if !self.check_indent(block.span) {
|
||||
@ -116,6 +121,10 @@ fn visit_block(&mut self, block: &Block) {
|
||||
}
|
||||
|
||||
fn visit_item(&mut self, item: &Item) {
|
||||
if item.span.from_expansion() {
|
||||
return;
|
||||
}
|
||||
|
||||
match &item.kind {
|
||||
ItemKind::Trait(_) | ItemKind::Impl(_) | ItemKind::Mod(.., ModKind::Loaded(_, Inline::Yes, _)) => {
|
||||
self.nest_level += 1;
|
||||
@ -126,10 +135,15 @@ fn visit_item(&mut self, item: &Item) {
|
||||
|
||||
self.nest_level -= 1;
|
||||
},
|
||||
// Mod: Don't visit non-inline modules
|
||||
// ForeignMod: I don't think this is necessary, but just incase let's not take any chances (don't want to
|
||||
// cause any false positives)
|
||||
ItemKind::Mod(..) | ItemKind::ForeignMod(..) => {},
|
||||
// Reset nesting level for non-inline modules (since these are in another file)
|
||||
ItemKind::Mod(..) => walk_item(
|
||||
&mut NestingVisitor {
|
||||
conf: self.conf,
|
||||
cx: self.cx,
|
||||
nest_level: 0,
|
||||
},
|
||||
item,
|
||||
),
|
||||
_ => walk_item(self, item),
|
||||
}
|
||||
}
|
||||
|
16
tests/ui-toml/excessive_nesting/auxiliary/mod.rs
Normal file
16
tests/ui-toml/excessive_nesting/auxiliary/mod.rs
Normal file
@ -0,0 +1,16 @@
|
||||
#![rustfmt::skip]
|
||||
|
||||
mod a {
|
||||
mod b {
|
||||
mod c {
|
||||
mod d {
|
||||
mod e {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// this should lint
|
||||
{{{}}}
|
||||
}
|
@ -10,6 +10,8 @@
|
||||
#![warn(clippy::excessive_nesting)]
|
||||
#![allow(clippy::collapsible_if)]
|
||||
|
||||
mod auxiliary;
|
||||
|
||||
#[macro_use]
|
||||
extern crate macro_rules;
|
||||
|
||||
@ -39,7 +41,7 @@ macro_rules! xx {
|
||||
{
|
||||
{
|
||||
{
|
||||
println!("ehe");
|
||||
println!("ehe"); // should not lint
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -135,7 +137,7 @@ fn main() {
|
||||
})();
|
||||
|
||||
excessive_nesting!(); // ensure this isn't linted in external macros
|
||||
xx!();
|
||||
xx!(); // ensure this is never linted
|
||||
let boo = true;
|
||||
!{boo as u32 + !{boo as u32 + !{boo as u32}}};
|
||||
|
||||
|
@ -1,5 +1,24 @@
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:19:21
|
||||
--> $DIR/auxiliary/mod.rs:6:13
|
||||
|
|
||||
LL | / mod d {
|
||||
LL | | mod e {}
|
||||
LL | | }
|
||||
| |_____________^
|
||||
|
|
||||
= help: try refactoring your code to minimize nesting
|
||||
= note: `-D clippy::excessive-nesting` implied by `-D warnings`
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/auxiliary/mod.rs:15:7
|
||||
|
|
||||
LL | {{{}}}
|
||||
| ^^
|
||||
|
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:21:21
|
||||
|
|
||||
LL | let z = {
|
||||
| _____________________^
|
||||
@ -9,10 +28,9 @@ LL | | };
|
||||
| |_____________^
|
||||
|
|
||||
= help: try refactoring your code to minimize nesting
|
||||
= note: `-D clippy::excessive-nesting` implied by `-D warnings`
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:63:24
|
||||
--> $DIR/excessive_nesting.rs:65:24
|
||||
|
|
||||
LL | pub fn b() {
|
||||
| ________________________^
|
||||
@ -27,7 +45,7 @@ LL | | }
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:79:21
|
||||
--> $DIR/excessive_nesting.rs:81:21
|
||||
|
|
||||
LL | fn cc() {
|
||||
| _____________________^
|
||||
@ -38,7 +56,7 @@ LL | | }
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:83:21
|
||||
--> $DIR/excessive_nesting.rs:85:21
|
||||
|
|
||||
LL | let x = { 1 }; // warning
|
||||
| ^^^^^
|
||||
@ -46,7 +64,7 @@ LL | let x = { 1 }; // warning
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:93:13
|
||||
--> $DIR/excessive_nesting.rs:95:13
|
||||
|
|
||||
LL | / pub mod d {
|
||||
LL | | pub mod e {
|
||||
@ -58,7 +76,7 @@ LL | | } // only warning should be here
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:107:17
|
||||
--> $DIR/excessive_nesting.rs:109:17
|
||||
|
|
||||
LL | a_but_not({{{{{{{{0}}}}}}}});
|
||||
| ^^^^^^^^^^^^^
|
||||
@ -66,7 +84,7 @@ LL | a_but_not({{{{{{{{0}}}}}}}});
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:108:11
|
||||
--> $DIR/excessive_nesting.rs:110:11
|
||||
|
|
||||
LL | a.a({{{{{{{{{0}}}}}}}}});
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@ -74,7 +92,7 @@ LL | a.a({{{{{{{{{0}}}}}}}}});
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:109:11
|
||||
--> $DIR/excessive_nesting.rs:111:11
|
||||
|
|
||||
LL | (0, {{{{{{{1}}}}}}});
|
||||
| ^^^^^^^^^^^
|
||||
@ -82,7 +100,7 @@ LL | (0, {{{{{{{1}}}}}}});
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:113:21
|
||||
--> $DIR/excessive_nesting.rs:115:21
|
||||
|
|
||||
LL | if true {
|
||||
| _____________________^
|
||||
@ -97,7 +115,7 @@ LL | | }
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:125:25
|
||||
--> $DIR/excessive_nesting.rs:127:25
|
||||
|
|
||||
LL | let y = (|| {
|
||||
| _________________________^
|
||||
@ -112,25 +130,7 @@ LL | | })();
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:33:13
|
||||
|
|
||||
LL | / {
|
||||
LL | | {
|
||||
LL | | {
|
||||
LL | | {
|
||||
... |
|
||||
LL | | }
|
||||
LL | | }
|
||||
| |_____________^
|
||||
...
|
||||
LL | xx!();
|
||||
| ----- in this macro invocation
|
||||
|
|
||||
= help: try refactoring your code to minimize nesting
|
||||
= note: this error originates in the macro `xx` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:140:36
|
||||
--> $DIR/excessive_nesting.rs:142:36
|
||||
|
|
||||
LL | !{boo as u32 + !{boo as u32 + !{boo as u32}}};
|
||||
| ^^^^^^^^^^^^
|
||||
@ -138,7 +138,7 @@ LL | !{boo as u32 + !{boo as u32 + !{boo as u32}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:144:12
|
||||
--> $DIR/excessive_nesting.rs:146:12
|
||||
|
|
||||
LL | y += {{{{{5}}}}};
|
||||
| ^^^^^^^
|
||||
@ -146,7 +146,7 @@ LL | y += {{{{{5}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:145:19
|
||||
--> $DIR/excessive_nesting.rs:147:19
|
||||
|
|
||||
LL | let z = y + {{{{{{{{{5}}}}}}}}};
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@ -154,7 +154,7 @@ LL | let z = y + {{{{{{{{{5}}}}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:146:11
|
||||
--> $DIR/excessive_nesting.rs:148:11
|
||||
|
|
||||
LL | [0, {{{{{{{{{{0}}}}}}}}}}];
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@ -162,7 +162,7 @@ LL | [0, {{{{{{{{{{0}}}}}}}}}}];
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:147:24
|
||||
--> $DIR/excessive_nesting.rs:149:24
|
||||
|
|
||||
LL | let mut xx = [0; {{{{{{{{100}}}}}}}}];
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@ -170,7 +170,7 @@ LL | let mut xx = [0; {{{{{{{{100}}}}}}}}];
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:148:10
|
||||
--> $DIR/excessive_nesting.rs:150:10
|
||||
|
|
||||
LL | xx[{{{{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}}}}}}}}}}}}}}}];
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -178,7 +178,7 @@ LL | xx[{{{{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}}}}}}}}}}}}}}}];
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:149:12
|
||||
--> $DIR/excessive_nesting.rs:151:12
|
||||
|
|
||||
LL | &mut {{{{{{{{{{y}}}}}}}}}};
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@ -186,7 +186,7 @@ LL | &mut {{{{{{{{{{y}}}}}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:151:16
|
||||
--> $DIR/excessive_nesting.rs:153:16
|
||||
|
|
||||
LL | for i in {{{{xx}}}} {{{{{{{{}}}}}}}}
|
||||
| ^^^^^^
|
||||
@ -194,7 +194,7 @@ LL | for i in {{{{xx}}}} {{{{{{{{}}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:151:27
|
||||
--> $DIR/excessive_nesting.rs:153:27
|
||||
|
|
||||
LL | for i in {{{{xx}}}} {{{{{{{{}}}}}}}}
|
||||
| ^^^^^^^^^^^^
|
||||
@ -202,7 +202,7 @@ LL | for i in {{{{xx}}}} {{{{{{{{}}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:153:27
|
||||
--> $DIR/excessive_nesting.rs:155:27
|
||||
|
|
||||
LL | while let Some(i) = {{{{{{Some(1)}}}}}} {{{{{{{}}}}}}}
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@ -210,7 +210,7 @@ LL | while let Some(i) = {{{{{{Some(1)}}}}}} {{{{{{{}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:153:47
|
||||
--> $DIR/excessive_nesting.rs:155:47
|
||||
|
|
||||
LL | while let Some(i) = {{{{{{Some(1)}}}}}} {{{{{{{}}}}}}}
|
||||
| ^^^^^^^^^^
|
||||
@ -218,7 +218,7 @@ LL | while let Some(i) = {{{{{{Some(1)}}}}}} {{{{{{{}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:155:13
|
||||
--> $DIR/excessive_nesting.rs:157:13
|
||||
|
|
||||
LL | while {{{{{{{{true}}}}}}}} {{{{{{{{{}}}}}}}}}
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@ -226,7 +226,7 @@ LL | while {{{{{{{{true}}}}}}}} {{{{{{{{{}}}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:155:34
|
||||
--> $DIR/excessive_nesting.rs:157:34
|
||||
|
|
||||
LL | while {{{{{{{{true}}}}}}}} {{{{{{{{{}}}}}}}}}
|
||||
| ^^^^^^^^^^^^^^
|
||||
@ -234,7 +234,7 @@ LL | while {{{{{{{{true}}}}}}}} {{{{{{{{{}}}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:157:22
|
||||
--> $DIR/excessive_nesting.rs:159:22
|
||||
|
|
||||
LL | let d = D { d: {{{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}}}}}}}}}}}}}} };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -242,7 +242,7 @@ LL | let d = D { d: {{{{{{{{{{{{{{{{{{{{{{{3}}}}}}}}}}}}}}}}}}}}}}} };
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:159:7
|
||||
--> $DIR/excessive_nesting.rs:161:7
|
||||
|
|
||||
LL | {{{{1;}}}}..{{{{{{3}}}}}};
|
||||
| ^^^^^^
|
||||
@ -250,7 +250,7 @@ LL | {{{{1;}}}}..{{{{{{3}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:159:19
|
||||
--> $DIR/excessive_nesting.rs:161:19
|
||||
|
|
||||
LL | {{{{1;}}}}..{{{{{{3}}}}}};
|
||||
| ^^^^^^^^^
|
||||
@ -258,7 +258,7 @@ LL | {{{{1;}}}}..{{{{{{3}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:160:7
|
||||
--> $DIR/excessive_nesting.rs:162:7
|
||||
|
|
||||
LL | {{{{1;}}}}..={{{{{{{{{{{{{{{{{{{{{{{{{{6}}}}}}}}}}}}}}}}}}}}}}}}}};
|
||||
| ^^^^^^
|
||||
@ -266,7 +266,7 @@ LL | {{{{1;}}}}..={{{{{{{{{{{{{{{{{{{{{{{{{{6}}}}}}}}}}}}}}}}}}}}}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:160:20
|
||||
--> $DIR/excessive_nesting.rs:162:20
|
||||
|
|
||||
LL | {{{{1;}}}}..={{{{{{{{{{{{{{{{{{{{{{{{{{6}}}}}}}}}}}}}}}}}}}}}}}}}};
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -274,7 +274,7 @@ LL | {{{{1;}}}}..={{{{{{{{{{{{{{{{{{{{{{{{{{6}}}}}}}}}}}}}}}}}}}}}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:161:9
|
||||
--> $DIR/excessive_nesting.rs:163:9
|
||||
|
|
||||
LL | ..{{{{{{{5}}}}}}};
|
||||
| ^^^^^^^^^^^
|
||||
@ -282,7 +282,7 @@ LL | ..{{{{{{{5}}}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:162:10
|
||||
--> $DIR/excessive_nesting.rs:164:10
|
||||
|
|
||||
LL | ..={{{{{3}}}}};
|
||||
| ^^^^^^^
|
||||
@ -290,7 +290,7 @@ LL | ..={{{{{3}}}}};
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:163:7
|
||||
--> $DIR/excessive_nesting.rs:165:7
|
||||
|
|
||||
LL | {{{{{1;}}}}}..;
|
||||
| ^^^^^^^^
|
||||
@ -298,7 +298,7 @@ LL | {{{{{1;}}}}}..;
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:165:19
|
||||
--> $DIR/excessive_nesting.rs:167:19
|
||||
|
|
||||
LL | loop { break {{{{1}}}} };
|
||||
| ^^^^^^^
|
||||
@ -306,7 +306,7 @@ LL | loop { break {{{{1}}}} };
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:166:12
|
||||
--> $DIR/excessive_nesting.rs:168:12
|
||||
|
|
||||
LL | loop {{{{{{}}}}}}
|
||||
| ^^^^^^^^
|
||||
@ -314,7 +314,7 @@ LL | loop {{{{{{}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:168:13
|
||||
--> $DIR/excessive_nesting.rs:170:13
|
||||
|
|
||||
LL | match {{{{{{true}}}}}} {
|
||||
| ^^^^^^^^^^^^
|
||||
@ -322,7 +322,7 @@ LL | match {{{{{{true}}}}}} {
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:169:19
|
||||
--> $DIR/excessive_nesting.rs:171:19
|
||||
|
|
||||
LL | true => {{{{}}}},
|
||||
| ^^^^
|
||||
@ -330,7 +330,7 @@ LL | true => {{{{}}}},
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:170:20
|
||||
--> $DIR/excessive_nesting.rs:172:20
|
||||
|
|
||||
LL | false => {{{{}}}},
|
||||
| ^^^^
|
||||
@ -338,7 +338,7 @@ LL | false => {{{{}}}},
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:175:13
|
||||
--> $DIR/excessive_nesting.rs:177:13
|
||||
|
|
||||
LL | / {
|
||||
LL | | {
|
||||
@ -350,7 +350,7 @@ LL | | }
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:185:27
|
||||
--> $DIR/excessive_nesting.rs:187:27
|
||||
|
|
||||
LL | async fn c() -> u32 {{{{{{{0}}}}}}}
|
||||
| ^^^^^^^^^^^
|
||||
@ -358,12 +358,12 @@ LL | async fn c() -> u32 {{{{{{{0}}}}}}}
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: this block is too nested
|
||||
--> $DIR/excessive_nesting.rs:191:7
|
||||
--> $DIR/excessive_nesting.rs:193:7
|
||||
|
|
||||
LL | {{{{b().await}}}};
|
||||
| ^^^^^^^^^^^^^
|
||||
|
|
||||
= help: try refactoring your code to minimize nesting
|
||||
|
||||
error: aborting due to 40 previous errors
|
||||
error: aborting due to 41 previous errors
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user