}
}
-impl<'a> HashStable<StableHashingContext<'a>> for ast::NodeId {
- fn hash_stable(&self, hcx: &mut StableHashingContext<'a>, hasher: &mut StableHasher) {
- match hcx.node_id_hashing_mode {
- NodeIdHashingMode::Ignore => {
- // Don't do anything.
- }
- NodeIdHashingMode::HashDefPath => {
- hcx.definitions.node_to_hir_id(*self).hash_stable(hcx, hasher);
- }
- }
- }
-}
-
impl<'a> ToStableHashKey<StableHashingContext<'a>> for ast::NodeId {
- type KeyType = (DefPathHash, hir::ItemLocalId);
+ type KeyType = Self;
#[inline]
- fn to_stable_hash_key(
- &self,
- hcx: &StableHashingContext<'a>,
- ) -> (DefPathHash, hir::ItemLocalId) {
- hcx.definitions.node_to_hir_id(*self).to_stable_hash_key(hcx)
+ fn to_stable_hash_key(&self, _: &StableHashingContext<'a>) -> Self {
+ *self
}
}
use rustc_span::source_map::{SourceMap, StableSourceFileId};
use rustc_span::{BytePos, SourceFile, Span, DUMMY_SP};
use std::mem;
-use syntax::ast::{Ident, NodeId};
+use syntax::ast::Ident;
const TAG_FILE_FOOTER: u128 = 0xC0FFEE_C0FFEE_C0FFEE_C0FFEE_C0FFEE;
}
}
-// `NodeId`s are not stable across compilation sessions, so we store them in their
-// `HirId` representation. This allows use to map them to the current `NodeId`.
-impl<'a, 'tcx> SpecializedDecoder<NodeId> for CacheDecoder<'a, 'tcx> {
- #[inline]
- fn specialized_decode(&mut self) -> Result<NodeId, Self::Error> {
- let hir_id = hir::HirId::decode(self)?;
- Ok(self.tcx().hir().hir_to_node_id(hir_id))
- }
-}
-
impl<'a, 'tcx> SpecializedDecoder<Fingerprint> for CacheDecoder<'a, 'tcx> {
fn specialized_decode(&mut self) -> Result<Fingerprint, Self::Error> {
Fingerprint::decode_opaque(&mut self.opaque)
}
}
-// `NodeId`s are not stable across compilation sessions, so we store them in their
-// `HirId` representation. This allows use to map them to the current `NodeId`.
-impl<'a, 'tcx, E> SpecializedEncoder<NodeId> for CacheEncoder<'a, 'tcx, E>
-where
- E: 'a + TyEncoder,
-{
- #[inline]
- fn specialized_encode(&mut self, node_id: &NodeId) -> Result<(), Self::Error> {
- let hir_id = self.tcx.hir().node_to_hir_id(*node_id);
- hir_id.encode(self)
- }
-}
-
impl<'a, 'tcx> SpecializedEncoder<Fingerprint> for CacheEncoder<'a, 'tcx, opaque::Encoder> {
fn specialized_encode(&mut self, f: &Fingerprint) -> Result<(), Self::Error> {
f.encode_opaque(&mut self.encoder)