lcnr
lcnr
While doing so, I tried to remove the `delay_span_bug` in `rematch_impl` again, which lead me to discover another `freshen` bug, fixing that one in the second commit. See commit descriptions...
https://counterexamples.org/distinctness-recursion.html Coherence in Rust is used to check that there are no overlapping trait impls. Failing to prevent overlapping impls can be exploited to get memory unsafety. Coherence works by...
cc @rust-lang/types
generalization is a core - and subtle - part of type inference and currently not explained in the guide. We should change that. We should talk about equality in general,...
> Trait resolution consists of three major parts: > > - [..] > - **Coherence**: The coherence checks are intended to ensure that there are never overlapping impls, where two...
`rustc_typeck` has been split into `rustc_hir_analysis` and `rustc_hir_typeck`, we should update the dev guide for this. partially done in #1490
The old solver sometimes incorrectly used `sub`, change it to explicitly instantiate binders and use `eq` instead. While doing so I also moved the instantiation before the normalize calls. This...
we should try to clean up our type relations further: - [ ] try to unify `Equate` and `Sub` to make them closer to `nll::TypeRelating` - [ ] merge `Lub`...
A first step towards fixing #122188. There are still some FIXMEs left, most notably method probing. fixes #122098 r? @oli-obk
When using `InferCtxt::probe/commit_if_ok`, we discard all inference variables created inside of this snapshot. This means that returning a type containing inference variables from it can later result in ICE if...