diff options
| author | Michael Goulet <michael@errs.io> | 2023-02-17 21:15:18 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-02-18 19:49:40 +0000 |
| commit | ec40b1a3938ea0f7ae27b4bffe62bd41dc8015af (patch) | |
| tree | 4ee758fe4f70c8e384c575ecb035c2752d3703f0 /compiler | |
| parent | f4a4a3147955ceb359204d85a74e15ee9d98046b (diff) | |
| download | rust-ec40b1a3938ea0f7ae27b4bffe62bd41dc8015af.tar.gz rust-ec40b1a3938ea0f7ae27b4bffe62bd41dc8015af.zip | |
Collapse placeholders to root universe in canonicalizer if not preserving universes
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_infer/src/infer/canonical/canonicalizer.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs b/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs index 2b33d31994f..b736a416e4a 100644 --- a/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs +++ b/compiler/rustc_infer/src/infer/canonical/canonicalizer.rs @@ -418,10 +418,15 @@ impl<'cx, 'tcx> TypeFolder<TyCtxt<'tcx>> for Canonicalizer<'cx, 'tcx> { bug!("encountered a fresh type during canonicalization") } - ty::Placeholder(placeholder) => self.canonicalize_ty_var( - CanonicalVarInfo { kind: CanonicalVarKind::PlaceholderTy(placeholder) }, - t, - ), + ty::Placeholder(mut placeholder) => { + if !self.canonicalize_mode.preserve_universes() { + placeholder.universe = ty::UniverseIndex::ROOT; + } + self.canonicalize_ty_var( + CanonicalVarInfo { kind: CanonicalVarKind::PlaceholderTy(placeholder) }, + t, + ) + } ty::Bound(debruijn, _) => { if debruijn >= self.binder_index { |
