From: Camille GILLOT Date: Tue, 1 Dec 2020 20:37:45 +0000 (+0100) Subject: Use the macro to implement HashStable. X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=f51c57fb7abf801a5bc29b3bb487c7eb5c7ffe9d;p=rust.git Use the macro to implement HashStable. --- diff --git a/compiler/rustc_middle/src/lint.rs b/compiler/rustc_middle/src/lint.rs index 7ac7720a7c5..7461979a9fe 100644 --- a/compiler/rustc_middle/src/lint.rs +++ b/compiler/rustc_middle/src/lint.rs @@ -51,13 +51,13 @@ pub fn span(&self) -> Span { /// A tuple of a lint level and its source. pub type LevelAndSource = (Level, LintLevelSource); -#[derive(Debug)] +#[derive(Debug, HashStable)] pub struct LintLevelSets { pub list: Vec, pub lint_cap: Level, } -#[derive(Debug)] +#[derive(Debug, HashStable)] pub enum LintSet { CommandLine { // -A,-W,-D flags, a `Symbol` for the flag itself and `Level` for which @@ -180,29 +180,7 @@ fn hash_stable(&self, hcx: &mut StableHashingContext<'a>, hasher: &mut StableHas id_to_set.hash_stable(hcx, hasher); - let LintLevelSets { ref list, lint_cap } = *sets; - - lint_cap.hash_stable(hcx, hasher); - - hcx.while_hashing_spans(true, |hcx| { - list.len().hash_stable(hcx, hasher); - - // We are working under the assumption here that the list of - // lint-sets is built in a deterministic order. - for lint_set in list { - ::std::mem::discriminant(lint_set).hash_stable(hcx, hasher); - - match *lint_set { - LintSet::CommandLine { ref specs } => { - specs.hash_stable(hcx, hasher); - } - LintSet::Node { ref specs, parent } => { - specs.hash_stable(hcx, hasher); - parent.hash_stable(hcx, hasher); - } - } - } - }) + hcx.while_hashing_spans(true, |hcx| sets.hash_stable(hcx, hasher)) } }