diff options
| author | David Wood <david@davidtw.co> | 2018-03-23 14:04:08 +0000 |
|---|---|---|
| committer | David Wood <david@davidtw.co> | 2018-03-23 14:04:08 +0000 |
| commit | 3a0162b7cb7f23236a23ef7747cc0ea5374bbb33 (patch) | |
| tree | 820d3c269d30ff08260e9c3602b7b6a11e57d16a | |
| parent | 03481f19eae7cf1f8475c63a0449860e3100d491 (diff) | |
Fixed issues with incremental tests.
| -rw-r--r-- | src/librustc/ty/codec.rs | 23 | ||||
| -rw-r--r-- | src/test/incremental/hashes/let_expressions.rs | 2 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/librustc/ty/codec.rs b/src/librustc/ty/codec.rs index f98bc953560..4e15f0711a5 100644 --- a/src/librustc/ty/codec.rs +++ b/src/librustc/ty/codec.rs @@ -17,6 +17,7 @@ // persisting to incr. comp. caches. use hir::def_id::{DefId, CrateNum}; +use infer::canonical::{CanonicalVarInfo, CanonicalVarInfos}; use rustc_data_structures::fx::FxHashMap; use rustc_serialize::{Decodable, Decoder, Encoder, Encodable, opaque}; use std::hash::Hash; @@ -240,6 +241,19 @@ pub fn decode_existential_predicate_slice<'a, 'tcx, D>(decoder: &mut D) } #[inline] +pub fn decode_canonical_var_infos<'a, 'tcx, D>(decoder: &mut D) + -> Result<CanonicalVarInfos<'tcx>, D::Error> + where D: TyDecoder<'a, 'tcx>, + 'tcx: 'a, +{ + let len = decoder.read_usize()?; + let interned: Result<Vec<CanonicalVarInfo>, _> = (0..len).map(|_| Decodable::decode(decoder)) + .collect(); + Ok(decoder.tcx() + .intern_canonical_var_infos(interned?.as_slice())) +} + +#[inline] pub fn decode_const<'a, 'tcx, D>(decoder: &mut D) -> Result<&'tcx ty::Const<'tcx>, D::Error> where D: TyDecoder<'a, 'tcx>, @@ -262,6 +276,7 @@ macro_rules! implement_ty_decoder { ($DecoderName:ident <$($typaram:tt),*>) => { mod __ty_decoder_impl { use super::$DecoderName; + use $crate::infer::canonical::CanonicalVarInfos; use $crate::ty; use $crate::ty::codec::*; use $crate::ty::subst::Substs; @@ -364,6 +379,14 @@ macro_rules! implement_ty_decoder { } } + impl<$($typaram),*> SpecializedDecoder<CanonicalVarInfos<'tcx>> + for $DecoderName<$($typaram),*> { + fn specialized_decode(&mut self) + -> Result<CanonicalVarInfos<'tcx>, Self::Error> { + decode_canonical_var_infos(self) + } + } + impl<$($typaram),*> SpecializedDecoder<&'tcx $crate::ty::Const<'tcx>> for $DecoderName<$($typaram),*> { fn specialized_decode(&mut self) -> Result<&'tcx ty::Const<'tcx>, Self::Error> { diff --git a/src/test/incremental/hashes/let_expressions.rs b/src/test/incremental/hashes/let_expressions.rs index 851b13c7055..2f49500c391 100644 --- a/src/test/incremental/hashes/let_expressions.rs +++ b/src/test/incremental/hashes/let_expressions.rs @@ -49,7 +49,7 @@ pub fn add_type() { #[cfg(not(cfail1))] #[rustc_clean(cfg="cfail2", - except="HirBody,TypeckTables")] + except="HirBody,TypeckTables,MirValidated")] #[rustc_clean(cfg="cfail3")] pub fn add_type() { let _x: u32 = 2u32; |
