diff --git a/clippy_lints/src/utils/hir_utils.rs b/clippy_lints/src/utils/hir_utils.rs index 34073d9725b..cad6ec532a6 100644 --- a/clippy_lints/src/utils/hir_utils.rs +++ b/clippy_lints/src/utils/hir_utils.rs @@ -1,4 +1,4 @@ -use consts::{constant, constant_context}; +use consts::{constant_simple, constant_context}; use rustc::lint::*; use rustc::hir::*; use std::hash::{Hash, Hasher}; @@ -64,7 +64,7 @@ impl<'a, 'tcx: 'a> SpanlessEq<'a, 'tcx> { return false; } - if let (Some(l), Some(r)) = (constant(self.cx, left), constant(self.cx, right)) { + if let (Some(l), Some(r)) = (constant_simple(self.cx, left), constant_simple(self.cx, right)) { if l == r { return true; } @@ -317,7 +317,7 @@ impl<'a, 'tcx: 'a> SpanlessHash<'a, 'tcx> { } pub fn hash_expr(&mut self, e: &Expr) { - if let Some(e) = constant(self.cx, e) { + if let Some(e) = constant_simple(self.cx, e) { return e.hash(&mut self.s); } diff --git a/tests/run-pass/match_same_arms_const.rs b/tests/run-pass/match_same_arms_const.rs new file mode 100644 index 00000000000..08acc2bc4d8 --- /dev/null +++ b/tests/run-pass/match_same_arms_const.rs @@ -0,0 +1,16 @@ +#![deny(match_same_arms)] + +const PRICE_OF_SWEETS: u32 = 5; +const PRICE_OF_KINDNESS: u32 = 0; +const PRICE_OF_DRINKS: u32 = 5; + +pub fn price(thing: &str) -> u32 { + match thing { + "rolo" => PRICE_OF_SWEETS, + "advice" => PRICE_OF_KINDNESS, + "juice" => PRICE_OF_DRINKS, + _ => panic!() + } +} + +fn main() {}