From 882b371171e061d0bdecd6cff3cece35dbc40909 Mon Sep 17 00:00:00 2001 From: flip1995 Date: Tue, 22 Oct 2019 11:18:18 +0200 Subject: [PATCH] Use StableHasher in SpanlessHasher --- clippy_lints/src/utils/hir_utils.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/clippy_lints/src/utils/hir_utils.rs b/clippy_lints/src/utils/hir_utils.rs index d7bcc589a46e..a810f715dcc2 100644 --- a/clippy_lints/src/utils/hir_utils.rs +++ b/clippy_lints/src/utils/hir_utils.rs @@ -2,10 +2,11 @@ use crate::consts::{constant_context, constant_simple}; use crate::utils::differing_macro_contexts; use rustc::hir::ptr::P; use rustc::hir::*; +use rustc::ich::StableHashingContextProvider; use rustc::lint::LateContext; use rustc::ty::TypeckTables; -use std::collections::hash_map::DefaultHasher; -use std::hash::{Hash, Hasher}; +use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; +use std::hash::Hash; use syntax::ast::Name; /// Type used to check whether two ast are the same. This is different from the @@ -348,7 +349,7 @@ pub struct SpanlessHash<'a, 'tcx> { /// Context used to evaluate constant expressions. cx: &'a LateContext<'a, 'tcx>, tables: &'a TypeckTables<'tcx>, - s: DefaultHasher, + s: StableHasher, } impl<'a, 'tcx> SpanlessHash<'a, 'tcx> { @@ -356,7 +357,7 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> { Self { cx, tables, - s: DefaultHasher::new(), + s: StableHasher::new(), } } @@ -411,7 +412,7 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> { self.hash_expr(r); }, ExprKind::AssignOp(ref o, ref l, ref r) => { - o.node.hash(&mut self.s); + o.node.hash_stable(&mut self.cx.tcx.get_stable_hashing_context(), &mut self.s); self.hash_expr(l); self.hash_expr(r); }, @@ -419,7 +420,7 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> { self.hash_block(b); }, ExprKind::Binary(op, ref l, ref r) => { - op.node.hash(&mut self.s); + op.node.hash_stable(&mut self.cx.tcx.get_stable_hashing_context(), &mut self.s); self.hash_expr(l); self.hash_expr(r); }, @@ -519,7 +520,7 @@ impl<'a, 'tcx> SpanlessHash<'a, 'tcx> { self.hash_exprs(v); }, ExprKind::Unary(lop, ref le) => { - lop.hash(&mut self.s); + lop.hash_stable(&mut self.cx.tcx.get_stable_hashing_context(), &mut self.s); self.hash_expr(le); }, }