Update const_conditions
and explicit_implied_const_bounds
docs
Move documentation to query definitions, and add docs to `explicit_implied_const_bounds`.
This commit is contained in:
parent
aa3c2d73ef
commit
2f4b9ddf89
2 changed files with 17 additions and 7 deletions
|
@ -940,12 +940,6 @@ impl<'tcx> ItemCtxt<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Compute the conditions that need to hold for a conditionally-const item to be const.
|
|
||||||
/// That is, compute the set of `~const` where clauses for a given item.
|
|
||||||
///
|
|
||||||
/// This query also computes the `~const` where clauses for associated types, which are
|
|
||||||
/// not "const", but which have item bounds which may be `~const`. These must hold for
|
|
||||||
/// the `~const` item bound to hold.
|
|
||||||
pub(super) fn const_conditions<'tcx>(
|
pub(super) fn const_conditions<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
def_id: LocalDefId,
|
def_id: LocalDefId,
|
||||||
|
@ -1063,7 +1057,9 @@ pub(super) fn explicit_implied_const_bounds<'tcx>(
|
||||||
def_id: LocalDefId,
|
def_id: LocalDefId,
|
||||||
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::PolyTraitRef<'tcx>, Span)]> {
|
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::PolyTraitRef<'tcx>, Span)]> {
|
||||||
if !tcx.is_conditionally_const(def_id) {
|
if !tcx.is_conditionally_const(def_id) {
|
||||||
bug!("const_conditions invoked for item that is not conditionally const: {def_id:?}");
|
bug!(
|
||||||
|
"explicit_implied_const_bounds invoked for item that is not conditionally const: {def_id:?}"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let bounds = match tcx.opt_rpitit_info(def_id.to_def_id()) {
|
let bounds = match tcx.opt_rpitit_info(def_id.to_def_id()) {
|
||||||
|
|
|
@ -748,6 +748,15 @@ rustc_queries! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Compute the conditions that need to hold for a conditionally-const item to be const.
|
||||||
|
/// That is, compute the set of `~const` where clauses for a given item.
|
||||||
|
///
|
||||||
|
/// This can be thought of as the `~const` equivalent of `predicates_of`. These are the
|
||||||
|
/// predicates that need to be proven at usage sites, and can be assumed at definition.
|
||||||
|
///
|
||||||
|
/// This query also computes the `~const` where clauses for associated types, which are
|
||||||
|
/// not "const", but which have item bounds which may be `~const`. These must hold for
|
||||||
|
/// the `~const` item bound to hold.
|
||||||
query const_conditions(
|
query const_conditions(
|
||||||
key: DefId
|
key: DefId
|
||||||
) -> ty::ConstConditions<'tcx> {
|
) -> ty::ConstConditions<'tcx> {
|
||||||
|
@ -757,6 +766,11 @@ rustc_queries! {
|
||||||
separate_provide_extern
|
separate_provide_extern
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Compute the const bounds that are implied for a conditionally-const item.
|
||||||
|
///
|
||||||
|
/// This can be though of as the `~const` equivalent of `explicit_item_bounds`. These
|
||||||
|
/// are the predicates that need to proven at definition sites, and can be assumed at
|
||||||
|
/// usage sites.
|
||||||
query explicit_implied_const_bounds(
|
query explicit_implied_const_bounds(
|
||||||
key: DefId
|
key: DefId
|
||||||
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::PolyTraitRef<'tcx>, Span)]> {
|
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::PolyTraitRef<'tcx>, Span)]> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue