Derive HashStable for TokenKind.
This commit is contained in:
parent
4d1674f620
commit
782cc9f65c
3 changed files with 12 additions and 79 deletions
|
|
@ -20,7 +20,6 @@
|
|||
#![recursion_limit="256"]
|
||||
|
||||
pub use errors;
|
||||
use rustc_data_structures::stable_hasher::StableHasher;
|
||||
use rustc_data_structures::sync::Lock;
|
||||
use rustc_index::bit_set::GrowableBitSet;
|
||||
pub use rustc_data_structures::thin_vec::ThinVec;
|
||||
|
|
@ -115,6 +114,4 @@ pub mod early_buffered_lints;
|
|||
/// Requirements for a `StableHashingContext` to be used in this crate.
|
||||
/// This is a hack to allow using the `HashStable_Generic` derive macro
|
||||
/// instead of implementing everything in librustc.
|
||||
pub trait HashStableContext: syntax_pos::HashStableContext {
|
||||
fn hash_stable_tokenkind(&mut self, tokenkind: &token::TokenKind, hasher: &mut StableHasher);
|
||||
}
|
||||
pub trait HashStableContext: syntax_pos::HashStableContext {}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ use rustc_data_structures::sync::Lrc;
|
|||
use rustc_macros::HashStable_Generic;
|
||||
|
||||
#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
|
||||
#[derive(HashStable_Generic)]
|
||||
pub enum BinOpToken {
|
||||
Plus,
|
||||
Minus,
|
||||
|
|
@ -192,7 +193,7 @@ fn ident_can_begin_type(name: ast::Name, span: Span, is_raw: bool) -> bool {
|
|||
].contains(&name)
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug)]
|
||||
#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, HashStable_Generic)]
|
||||
pub enum TokenKind {
|
||||
/* Expression-operator symbols. */
|
||||
Eq,
|
||||
|
|
@ -264,14 +265,6 @@ pub enum TokenKind {
|
|||
#[cfg(target_arch = "x86_64")]
|
||||
rustc_data_structures::static_assert_size!(TokenKind, 16);
|
||||
|
||||
impl<CTX> HashStable<CTX> for TokenKind
|
||||
where CTX: crate::HashStableContext
|
||||
{
|
||||
fn hash_stable(&self, hcx: &mut CTX, hasher: &mut StableHasher) {
|
||||
hcx.hash_stable_tokenkind(self, hasher)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, RustcEncodable, RustcDecodable, Debug, HashStable_Generic)]
|
||||
pub struct Token {
|
||||
pub kind: TokenKind,
|
||||
|
|
@ -735,3 +728,11 @@ impl fmt::Debug for Nonterminal {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<CTX> HashStable<CTX> for Nonterminal
|
||||
where CTX: crate::HashStableContext
|
||||
{
|
||||
fn hash_stable(&self, _hcx: &mut CTX, _hasher: &mut StableHasher) {
|
||||
panic!("interpolated tokens should not be present in the HIR")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue