about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-09-27 19:08:01 +0200
committerGitHub <noreply@github.com>2024-09-27 19:08:01 +0200
commit966a0b76bc21ba65071b4d50dfb0536e0581604f (patch)
treecb03957ec3e5050d456cb76445a55c146af42ce6
parent01fecf60efcb9c92c8243812e827e09ac965fba4 (diff)
parent9766192545190027b3c087f78cdc7dc5a51f0204 (diff)
downloadrust-966a0b76bc21ba65071b4d50dfb0536e0581604f.tar.gz
rust-966a0b76bc21ba65071b4d50dfb0536e0581604f.zip
Rollup merge of #130927 - lcnr:normalizes-to-comments, r=compiler-errors
update outdated comments

r? `@compiler-errors` cc `@gavinleroy`
-rw-r--r--compiler/rustc_type_ir/src/predicate.rs4
-rw-r--r--compiler/rustc_type_ir/src/predicate_kind.rs12
2 files changed, 8 insertions, 8 deletions
diff --git a/compiler/rustc_type_ir/src/predicate.rs b/compiler/rustc_type_ir/src/predicate.rs
index 7e300fe02dc..76065c10d19 100644
--- a/compiler/rustc_type_ir/src/predicate.rs
+++ b/compiler/rustc_type_ir/src/predicate.rs
@@ -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))]
diff --git a/compiler/rustc_type_ir/src/predicate_kind.rs b/compiler/rustc_type_ir/src/predicate_kind.rs
index c8a21028588..55015e6e202 100644
--- a/compiler/rustc_type_ir/src/predicate_kind.rs
+++ b/compiler/rustc_type_ir/src/predicate_kind.rs
@@ -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.