Split item bounds and item super predicates
This commit is contained in:
parent
a128516cf9
commit
aa39dbb962
20 changed files with 186 additions and 46 deletions
|
@ -343,11 +343,14 @@ rustc_queries! {
|
|||
}
|
||||
}
|
||||
|
||||
/// Returns the list of bounds that can be used for
|
||||
/// `SelectionCandidate::ProjectionCandidate(_)` and
|
||||
/// `ProjectionTyCandidate::TraitDef`.
|
||||
/// Specifically this is the bounds written on the trait's type
|
||||
/// definition, or those after the `impl` keyword
|
||||
/// Returns the list of bounds that are required to be satsified
|
||||
/// by a implementation or definition. For associated types, these
|
||||
/// must be satisfied for an implementation to be well-formed,
|
||||
/// and for opaque types, these are required to be satisfied by
|
||||
/// the hidden-type of the opaque.
|
||||
///
|
||||
/// Syntactially, these are the bounds written on the trait's type
|
||||
/// definition, or those after the `impl` keyword for an opaque:
|
||||
///
|
||||
/// ```ignore (incomplete)
|
||||
/// type X: Bound + 'lt
|
||||
|
@ -363,7 +366,16 @@ rustc_queries! {
|
|||
desc { |tcx| "finding item bounds for `{}`", tcx.def_path_str(key) }
|
||||
cache_on_disk_if { key.is_local() }
|
||||
separate_provide_extern
|
||||
feedable
|
||||
}
|
||||
|
||||
/// The set of item bounds (see [`TyCtxt::explicit_item_bounds`]) that
|
||||
/// share the `Self` type of the item. These are a subset of the bounds
|
||||
/// that may explicitly be used for things like closure signature
|
||||
/// deduction.
|
||||
query explicit_item_super_predicates(key: DefId) -> ty::EarlyBinder<&'tcx [(ty::Clause<'tcx>, Span)]> {
|
||||
desc { |tcx| "finding item bounds for `{}`", tcx.def_path_str(key) }
|
||||
cache_on_disk_if { key.is_local() }
|
||||
separate_provide_extern
|
||||
}
|
||||
|
||||
/// Elaborated version of the predicates from `explicit_item_bounds`.
|
||||
|
@ -390,6 +402,14 @@ rustc_queries! {
|
|||
desc { |tcx| "elaborating item bounds for `{}`", tcx.def_path_str(key) }
|
||||
}
|
||||
|
||||
query item_super_predicates(key: DefId) -> ty::EarlyBinder<&'tcx ty::List<ty::Clause<'tcx>>> {
|
||||
desc { |tcx| "elaborating item assumptions for `{}`", tcx.def_path_str(key) }
|
||||
}
|
||||
|
||||
query item_non_self_assumptions(key: DefId) -> ty::EarlyBinder<&'tcx ty::List<ty::Clause<'tcx>>> {
|
||||
desc { |tcx| "elaborating item assumptions for `{}`", tcx.def_path_str(key) }
|
||||
}
|
||||
|
||||
/// Look up all native libraries this crate depends on.
|
||||
/// These are assembled from the following places:
|
||||
/// - `extern` blocks (depending on their `link` attributes)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue