Fix #2427
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
use consts::{constant, constant_context};
|
use consts::{constant_simple, constant_context};
|
||||||
use rustc::lint::*;
|
use rustc::lint::*;
|
||||||
use rustc::hir::*;
|
use rustc::hir::*;
|
||||||
use std::hash::{Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
@@ -64,7 +64,7 @@ impl<'a, 'tcx: 'a> SpanlessEq<'a, 'tcx> {
|
|||||||
return false;
|
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 {
|
if l == r {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -317,7 +317,7 @@ impl<'a, 'tcx: 'a> SpanlessHash<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn hash_expr(&mut self, e: &Expr) {
|
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);
|
return e.hash(&mut self.s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
16
tests/run-pass/match_same_arms_const.rs
Normal file
16
tests/run-pass/match_same_arms_const.rs
Normal file
@@ -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() {}
|
||||||
Reference in New Issue
Block a user