diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-03-10 19:59:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-10 19:59:18 +0100 |
| commit | 233ed35e8491c2c08e7320fba3f3bd5519daf58d (patch) | |
| tree | 0426a5625f713a7a03dea598ec42edc3d71398c5 /compiler/rustc_trait_selection/src/solve | |
| parent | b90277e37b0ef43b8a3755f027ae29c991172fd0 (diff) | |
| parent | d4b59a0da25ab72014ee0aaf7f7e647f1682e083 (diff) | |
| download | rust-233ed35e8491c2c08e7320fba3f3bd5519daf58d.tar.gz rust-233ed35e8491c2c08e7320fba3f3bd5519daf58d.zip | |
Rollup merge of #108828 - compiler-errors:new-solver-alias-eq-on-num-var, r=lcnr
Emit alias-eq when equating numeric var and projection This doesn't fix everything having to do with projections and infer vars, but it does fix a common case I saw in HIR typeck. r? `@lcnr`
Diffstat (limited to 'compiler/rustc_trait_selection/src/solve')
| -rw-r--r-- | compiler/rustc_trait_selection/src/solve/canonical/canonicalize.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/compiler/rustc_trait_selection/src/solve/canonical/canonicalize.rs b/compiler/rustc_trait_selection/src/solve/canonical/canonicalize.rs index 981a8f45e45..7ee4f332306 100644 --- a/compiler/rustc_trait_selection/src/solve/canonical/canonicalize.rs +++ b/compiler/rustc_trait_selection/src/solve/canonical/canonicalize.rs @@ -278,16 +278,16 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for Canonicalizer<'_, 'tcx> { Err(ui) => CanonicalVarKind::Ty(CanonicalTyVarKind::General(ui)), } } - ty::Infer(ty::IntVar(_)) => { - let nt = self.infcx.shallow_resolve(t); + ty::Infer(ty::IntVar(vid)) => { + let nt = self.infcx.opportunistic_resolve_int_var(vid); if nt != t { return self.fold_ty(nt); } else { CanonicalVarKind::Ty(CanonicalTyVarKind::Int) } } - ty::Infer(ty::FloatVar(_)) => { - let nt = self.infcx.shallow_resolve(t); + ty::Infer(ty::FloatVar(vid)) => { + let nt = self.infcx.opportunistic_resolve_float_var(vid); if nt != t { return self.fold_ty(nt); } else { |
