Skip to content

Commit

Permalink
Add test for warning emitting if match is too complex
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez committed Mar 18, 2024
1 parent 99edb1b commit b44b29e
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
75 changes: 75 additions & 0 deletions tests/ui/pattern/too_complex_match.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
//@ check-pass

#[derive(Default)]
struct BaseCommand {
field01: bool,
field02: bool,
field03: bool,
field04: bool,
field05: bool,
field06: bool,
field07: bool,
field08: bool,
field09: bool,
field10: bool,
field11: bool,
field12: bool,
field13: bool,
field14: bool,
field15: bool,
field16: bool,
field17: bool,
field18: bool,
field19: bool,
field20: bool,
}

fn request_key(command: BaseCommand) {
match command { //~ WARN: `match` is too complex
BaseCommand { field01: true, .. } => {}
BaseCommand { field02: true, .. } => {}
BaseCommand { field03: true, .. } => {}
BaseCommand { field04: true, .. } => {}
BaseCommand { field05: true, .. } => {}
BaseCommand { field06: true, .. } => {}
BaseCommand { field07: true, .. } => {}
BaseCommand { field08: true, .. } => {}
BaseCommand { field09: true, .. } => {}
BaseCommand { field10: true, .. } => {}
BaseCommand { field11: true, .. } => {}
BaseCommand { field12: true, .. } => {}
BaseCommand { field13: true, .. } => {}
BaseCommand { field14: true, .. } => {}
BaseCommand { field15: true, .. } => {}
BaseCommand { field16: true, .. } => {}
BaseCommand { field17: true, .. } => {}
BaseCommand { field18: true, .. } => {}
BaseCommand { field19: true, .. } => {}
BaseCommand { field20: true, .. } => {}

BaseCommand { field01: false, .. } => {}
BaseCommand { field02: false, .. } => {}
BaseCommand { field03: false, .. } => {}
BaseCommand { field04: false, .. } => {}
BaseCommand { field05: false, .. } => {}
BaseCommand { field06: false, .. } => {}
BaseCommand { field07: false, .. } => {}
BaseCommand { field08: false, .. } => {}
BaseCommand { field09: false, .. } => {}
BaseCommand { field10: false, .. } => {}
BaseCommand { field11: false, .. } => {}
BaseCommand { field12: false, .. } => {}
BaseCommand { field13: false, .. } => {}
BaseCommand { field14: false, .. } => {}
BaseCommand { field15: false, .. } => {}
BaseCommand { field16: false, .. } => {}
BaseCommand { field17: false, .. } => {}
BaseCommand { field18: false, .. } => {}
BaseCommand { field19: false, .. } => {}
BaseCommand { field20: false, .. } => {}
}
}

fn main() {
request_key(BaseCommand::default());
}
14 changes: 14 additions & 0 deletions tests/ui/pattern/too_complex_match.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
warning: `match` is too complex
--> $DIR/too_complex_match.rs:28:5
|
LL | / match command {
LL | | BaseCommand { field01: true, .. } => {}
LL | | BaseCommand { field02: true, .. } => {}
LL | | BaseCommand { field03: true, .. } => {}
... |
LL | | BaseCommand { field20: false, .. } => {}
LL | | }
| |_____^

warning: 1 warning emitted

0 comments on commit b44b29e

Please sign in to comment.