diff options
| author | nora <48135649+Noratrieb@users.noreply.github.com> | 2025-06-02 12:55:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-02 12:55:31 +0200 |
| commit | d6cc62c8c50a5eb45372dc6c97bf76601653f028 (patch) | |
| tree | ca683719303aac2972d40f4c78b98b234e12d23f | |
| parent | d243d370fb28d599d012effca12cbcc0e4842848 (diff) | |
| parent | 23285efeaba21dc3fcb8904ece44dffc09777d8a (diff) | |
| download | rust-d6cc62c8c50a5eb45372dc6c97bf76601653f028.tar.gz rust-d6cc62c8c50a5eb45372dc6c97bf76601653f028.zip | |
Merge pull request #2440 from rust-lang/tshepang-patch-1
distracting indirection
| -rw-r--r-- | src/doc/rustc-dev-guide/src/normalization.md | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/doc/rustc-dev-guide/src/normalization.md b/src/doc/rustc-dev-guide/src/normalization.md index beeeb9e30b7..eb0962a4122 100644 --- a/src/doc/rustc-dev-guide/src/normalization.md +++ b/src/doc/rustc-dev-guide/src/normalization.md @@ -265,13 +265,13 @@ Another problem was that it was not possible to normalize `ParamEnv`s correctly Given a type such as `for<'a> fn(<?x as Trait<'a>::Assoc>)`, it is not possible to correctly handle this with the old solver's approach to normalization. -If we were to normalize it to `for<'a> fn(?y)` and register a goal to normalize `for<'a> <?x as Trait<'a>>::Assoc -> ?y`, this would result in errors in cases where `<?x as Trait<'a>>::Assoc` normalized to `&'a u32`. The inference variable `?y` would be in a lower [universe][universes] than the placeholders made when instantiating the `for<'a>` binder. +If we were to normalize it to `for<'a> fn(?y)` and register a goal to normalize `for<'a> <?x as Trait<'a>>::Assoc -> ?y`, this would result in errors in cases where `<?x as Trait<'a>>::Assoc` normalized to `&'a u32`. The inference variable `?y` would be in a lower [universe] than the placeholders made when instantiating the `for<'a>` binder. Leaving the alias unnormalized would also be wrong as the old solver expects all aliases to be rigid. This was a soundness bug before the new solver was stabilized in coherence: [relating projection substs is unsound during coherence](https://github.com/rust-lang/rust/issues/102048). Ultimately this means that it is not always possible to ensure all aliases inside of a value are rigid. -[universes]: borrow_check/region_inference/placeholders_and_universes.md#what-is-a-universe +[universe]: borrow_check/region_inference/placeholders_and_universes.md#what-is-a-universe [deeply_normalize]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_trait_selection/traits/normalize/trait.NormalizeExt.html#tymethod.deeply_normalize ## Handling uses of diverging aliases |
