Skip to content

Commit

Permalink
Rollup merge of rust-lang#130927 - lcnr:normalizes-to-comments, r=com…
Browse files Browse the repository at this point in the history
…piler-errors

update outdated comments

r? `@compiler-errors` cc `@gavinleroy`
  • Loading branch information
matthiaskrgr authored Sep 27, 2024
2 parents 01fecf6 + 9766192 commit 966a0b7
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
4 changes: 2 additions & 2 deletions compiler/rustc_type_ir/src/predicate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -668,8 +668,8 @@ impl<I: Interner> fmt::Debug for ProjectionPredicate<I> {
}
}

/// Used by the new solver. Unlike a `ProjectionPredicate` this can only be
/// proven by actually normalizing `alias`.
/// Used by the new solver to normalize an alias. This always expects the `term` to
/// be an unconstrained inference variable which is used as the output.
#[derive_where(Clone, Copy, Hash, PartialEq, Eq; I: Interner)]
#[derive(TypeVisitable_Generic, TypeFoldable_Generic, Lift_Generic)]
#[cfg_attr(feature = "nightly", derive(TyDecodable, TyEncodable, HashStable_NoContext))]
Expand Down
12 changes: 6 additions & 6 deletions compiler/rustc_type_ir/src/predicate_kind.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,13 @@ pub enum PredicateKind<I: Interner> {
Ambiguous,

/// This should only be used inside of the new solver for `AliasRelate` and expects
/// the `term` to be an unconstrained inference variable.
/// the `term` to be always be an unconstrained inference variable. It is used to
/// normalize `alias` as much as possible. In case the alias is rigid - i.e. it cannot
/// be normalized in the current environment - this constrains `term` to be equal to
/// the alias itself.
///
/// The alias normalizes to `term`. Unlike `Projection`, this always fails if the
/// alias cannot be normalized in the current context. For the rigid alias
/// `T as Trait>::Assoc`, `Projection(<T as Trait>::Assoc, ?x)` constrains `?x`
/// to `<T as Trait>::Assoc` while `NormalizesTo(<T as Trait>::Assoc, ?x)`
/// results in `NoSolution`.
/// It is likely more useful to think of this as a function `normalizes_to(alias)`,
/// whose return value is written into `term`.
NormalizesTo(ty::NormalizesTo<I>),

/// Separate from `ClauseKind::Projection` which is used for normalization in new solver.
Expand Down

0 comments on commit 966a0b7

Please sign in to comment.