Skip to content

Commit

Permalink
Unrolled build for rust-lang#137837
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#137837 - fee1-dead-contrib:push-pvqvwuvrnwsy, r=compiler-errors

Update `const_conditions` and `explicit_implied_const_bounds` docs

Move documentation to query definitions, and add docs to `explicit_implied_const_bounds`.

r? project-const-traits
  • Loading branch information
rust-timer authored Mar 2, 2025
2 parents 351686b + 2f4b9dd commit b313d8f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
10 changes: 3 additions & 7 deletions compiler/rustc_hir_analysis/src/collect/predicates_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -937,12 +937,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>(
tcx: TyCtxt<'tcx>,
def_id: LocalDefId,
Expand Down Expand Up @@ -1060,7 +1054,9 @@ pub(super) fn explicit_implied_const_bounds<'tcx>(
def_id: LocalDefId,
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::PolyTraitRef<'tcx>, Span)]> {
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()) {
Expand Down
14 changes: 14 additions & 0 deletions compiler/rustc_middle/src/query/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
key: DefId
) -> ty::ConstConditions<'tcx> {
Expand All @@ -757,6 +766,11 @@ rustc_queries! {
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(
key: DefId
) -> ty::EarlyBinder<'tcx, &'tcx [(ty::PolyTraitRef<'tcx>, Span)]> {
Expand Down

0 comments on commit b313d8f

Please sign in to comment.