about summary refs log tree commit diff
path: root/compiler/rustc_trait_selection/src/solve/canonicalize.rs
AgeCommit message (Collapse)AuthorLines
2023-12-08Uplift canonicalizer into new trait solver crateMichael Goulet-428/+0
2023-12-08implement and use `NormalizesTo`lcnr-2/+2
2023-11-14finish `RegionKind` renamelcnr-1/+1
- `ReFree` -> `ReLateParam` - `ReEarlyBound` -> `ReEarlyParam`
2023-11-13rename `ReLateBound` to `ReBound`lcnr-2/+2
other changes: - `Region::new_late_bound` -> `Region::new_bound` - `Region::is_late_bound` -> `Region::is_bound`
2023-10-23Handle ReErased in responses in new solverMichael Goulet-2/+10
2023-10-20s/Generator/Coroutine/Oli Scherer-2/+2
2023-09-24Remove span from BrAnon.Camille GILLOT-1/+1
2023-09-23Remove GeneratorWitness and rename GeneratorWitnessMIR.Camille GILLOT-2/+1
2023-09-15Canonicalize effect vars in new solverMichael Goulet-2/+10
2023-09-10Implement fallback for effect paramDeadbeef-0/+3
2023-08-03resolve before canonicalization, ICE if unresolvedMichael Goulet-59/+35
2023-07-27Revert "don't uniquify regions when canonicalizing"Michael Goulet-11/+14
This reverts commit 171f5414705194067557cd7b70bd680308b9cced.
2023-07-05Move `TyCtxt::mk_x` to `Ty::new_x` where applicableBoxy-2/+2
2023-07-04Replace `mk_const` with `Const::new_x` methodsBoxy-2/+2
2023-06-13opportunistically resolve regionsMichael Goulet-2/+19
2023-05-29Rename `tcx.mk_re_*` => `Region::new_*`Maybe Waffle-1/+1
2023-04-27rename `needs_infer` to `has_infer`Boxy-1/+1
2023-04-14Rollup merge of #110180 - lcnr:canonicalize, r=compiler-errorsMatthias Krüger-14/+11
don't uniquify regions when canonicalizing uniquifying causes a bunch of issues, most notably it causes `AliasEq(<?x as Trait<'a>>::Assoc, <?x as Trait<'a>>::Assoc)` to result in ambiguity because both `normalizes-to` paths result in ambiguity and substs equate should trivially succeed but doesn't because we uniquified `'a` to two different regions. I originally added uniquification to make it easier to deal with requirement 6 from the dev-guide: https://rustc-dev-guide.rust-lang.org/solve/trait-solving.html#requirements > ### 6. Trait solving must be (free) lifetime agnostic > > Trait solving during codegen should have the same result as during typeck. As we erase > all free regions during codegen we must not rely on them during typeck. A noteworthy example > is special behavior for `'static`. cc https://github.com/rust-lang/rustc-dev-guide/pull/1671 Relying on regions being identical may cause ICE during MIR typeck, but even without this PR we can end up relying on that as type inference vars can resolve to types which contain an identical region. Let's land this and deal with any ICE that crop up as we go. Will look at this issue again before stabilization. r? ```@compiler-errors```
2023-04-11don't uniquify regions when canonicalizinglcnr-14/+11
2023-04-10Fix typos in compilerDaniPopes-2/+2
2023-04-06Remove u32 on BoundTyKind::AnonJack Huey-3/+3
2023-04-06Remove index from BrAnonJack Huey-1/+1
2023-04-06Use BoundTy and BoundRegion instead of kind of PlaceholderTy and ↵Jack Huey-4/+10
PlaceholderRegion
2023-03-30canonicalize float var as float in new solverMichael Goulet-1/+1
2023-03-29Move canonicalization code aroundMichael Goulet-0/+411