-// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-
-#![feature(tool_lints)]
-
#![warn(clippy::single_match)]
-fn dummy() {
-}
+fn dummy() {}
-fn single_match(){
+fn single_match() {
let x = Some(1u8);
match x {
- Some(y) => { println!("{:?}", y); }
- _ => ()
+ Some(y) => {
+ println!("{:?}", y);
+ },
+ _ => (),
};
- let z = (1u8,1u8);
+ let x = Some(1u8);
+ match x {
+ // Note the missing block braces.
+ // We suggest `if let Some(y) = x { .. }` because the macro
+ // is expanded before we can do anything.
+ Some(y) => println!("{:?}", y),
+ _ => (),
+ }
+
+ let z = (1u8, 1u8);
match z {
- (2...3, 7...9) => dummy(),
- _ => {}
+ (2..=3, 7..=9) => dummy(),
+ _ => {},
};
// Not linted (pattern guards used)
match x {
Some(y) if y == 0 => println!("{:?}", y),
- _ => ()
+ _ => (),
}
// Not linted (no block with statements in the single arm)
match z {
- (2...3, 7...9) => println!("{:?}", z),
+ (2..=3, 7..=9) => println!("{:?}", z),
_ => println!("nope"),
}
}
-enum Foo { Bar, Baz(u8) }
-use Foo::*;
+enum Foo {
+ Bar,
+ Baz(u8),
+}
use std::borrow::Cow;
+use Foo::*;
fn single_match_know_enum() {
let x = Some(1u8);
- let y : Result<_, i8> = Ok(1i8);
+ let y: Result<_, i8> = Ok(1i8);
match x {
Some(y) => dummy(),
- None => ()
+ None => (),
};
match y {
Ok(y) => dummy(),
- Err(..) => ()
+ Err(..) => (),
};
let c = Cow::Borrowed("");
}
}
-fn main() { }
+macro_rules! single_match {
+ ($num:literal) => {
+ match $num {
+ 15 => println!("15"),
+ _ => (),
+ }
+ };
+}
+
+fn main() {
+ single_match!(5);
+}