parent
521d91c6be
commit
5766e71fa7
5 changed files with 6 additions and 1 deletions
|
|
@ -36,6 +36,7 @@ use util::nodemap::{DefIdMap, FxHashMap};
|
|||
/// parents of a given specializing impl, which is needed for extracting
|
||||
/// default items amongst other things. In the simple "chain" rule, every impl
|
||||
/// has at most one parent.
|
||||
#[derive(RustcEncodable, RustcDecodable)]
|
||||
pub struct Graph {
|
||||
// all impls have a parent; the "root" impls have as their parent the def_id
|
||||
// of the trait
|
||||
|
|
@ -47,6 +48,7 @@ pub struct Graph {
|
|||
|
||||
/// Children of a given impl, grouped into blanket/non-blanket varieties as is
|
||||
/// done in `TraitDef`.
|
||||
#[derive(RustcEncodable, RustcDecodable)]
|
||||
struct Children {
|
||||
// Impls of a trait (or specializations of a given impl). To allow for
|
||||
// quicker lookup, the impls are indexed by a simplified version of their
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ pub type SimplifiedType = SimplifiedTypeGen<DefId>;
|
|||
/// because we sometimes need to use SimplifiedTypeGen values as stable sorting
|
||||
/// keys (in which case we use a DefPathHash as id-type) but in the general case
|
||||
/// the non-stable but fast to construct DefId-version is the better choice.
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, RustcEncodable, RustcDecodable)]
|
||||
pub enum SimplifiedTypeGen<D>
|
||||
where D: Copy + Debug + Ord + Eq + Hash
|
||||
{
|
||||
|
|
|
|||
|
|
@ -721,3 +721,4 @@ impl_disk_cacheable_query!(type_of, |def_id| def_id.is_local());
|
|||
impl_disk_cacheable_query!(predicates_of, |def_id| def_id.is_local());
|
||||
impl_disk_cacheable_query!(used_trait_imports, |def_id| def_id.is_local());
|
||||
impl_disk_cacheable_query!(trans_fn_attrs, |_| true);
|
||||
impl_disk_cacheable_query!(specialization_graph_of, |_| true);
|
||||
|
|
|
|||
|
|
@ -221,6 +221,7 @@ impl<'sess> OnDiskCache<'sess> {
|
|||
encode_query_results::<symbol_name, _>(tcx, enc, qri)?;
|
||||
encode_query_results::<check_match, _>(tcx, enc, qri)?;
|
||||
encode_query_results::<trans_fn_attrs, _>(tcx, enc, qri)?;
|
||||
encode_query_results::<specialization_graph_of, _>(tcx, enc, qri)?;
|
||||
|
||||
// const eval is special, it only encodes successfully evaluated constants
|
||||
use ty::maps::plumbing::GetCacheInternal;
|
||||
|
|
|
|||
|
|
@ -1001,4 +1001,5 @@ impl_load_from_cache!(
|
|||
PredicatesOfItem => predicates_of,
|
||||
UsedTraitImports => used_trait_imports,
|
||||
TransFnAttrs => trans_fn_attrs,
|
||||
SpecializationGraph => specialization_graph_of,
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue