diff options
| author | bors <bors@rust-lang.org> | 2018-11-27 15:54:21 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-11-27 15:54:21 +0000 |
| commit | aeff91d97702c11cdb5992fd18bb2cf2fb99efda (patch) | |
| tree | cf700ca114908c41193a5dfda4b2a846c97bbf55 | |
| parent | 10e2c729ea2e85cb1e2a08be40564492f49e45ec (diff) | |
| parent | efb2949b93a8e650d8a4372bec87ee1f1f2e11b2 (diff) | |
| download | rust-aeff91d97702c11cdb5992fd18bb2cf2fb99efda.tar.gz rust-aeff91d97702c11cdb5992fd18bb2cf2fb99efda.zip | |
Auto merge of #56251 - scalexm:root-universe, r=nikomatsakis
Put all existential ty vars in the `ROOT` universe r? @nikomatsakis
| -rw-r--r-- | src/librustc/infer/canonical/canonicalizer.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/nll/user-annotations/dump-fn-method.stderr | 2 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/librustc/infer/canonical/canonicalizer.rs b/src/librustc/infer/canonical/canonicalizer.rs index ddb520775da..406a36e61fb 100644 --- a/src/librustc/infer/canonical/canonicalizer.rs +++ b/src/librustc/infer/canonical/canonicalizer.rs @@ -346,12 +346,18 @@ impl<'cx, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for Canonicalizer<'cx, 'gcx, 'tcx> // `TyVar(vid)` is unresolved, track its universe index in the canonicalized // result - Err(ui) => self.canonicalize_ty_var( - CanonicalVarInfo { - kind: CanonicalVarKind::Ty(CanonicalTyVarKind::General(ui)) - }, - t - ) + Err(mut ui) => { + if !self.infcx.unwrap().tcx.sess.opts.debugging_opts.chalk { + // FIXME: perf problem described in #55921. + ui = ty::UniverseIndex::ROOT; + } + self.canonicalize_ty_var( + CanonicalVarInfo { + kind: CanonicalVarKind::Ty(CanonicalTyVarKind::General(ui)) + }, + t + ) + } } } diff --git a/src/test/ui/nll/user-annotations/dump-fn-method.stderr b/src/test/ui/nll/user-annotations/dump-fn-method.stderr index c963625c961..7683c20b5b6 100644 --- a/src/test/ui/nll/user-annotations/dump-fn-method.stderr +++ b/src/test/ui/nll/user-annotations/dump-fn-method.stderr @@ -16,7 +16,7 @@ error: user substs: Canonical { max_universe: U0, variables: [], value: UserSubs LL | let x = <u8 as Bazoom<u16>>::method::<u32>; //~ ERROR [u8, u16, u32] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: user substs: Canonical { max_universe: U1, variables: [CanonicalVarInfo { kind: Ty(General(U1)) }, CanonicalVarInfo { kind: Ty(General(U1)) }], value: UserSubsts { substs: [^0, ^1, u32], user_self_ty: None } } +error: user substs: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }, CanonicalVarInfo { kind: Ty(General(U0)) }], value: UserSubsts { substs: [^0, ^1, u32], user_self_ty: None } } --> $DIR/dump-fn-method.rs:54:5 | LL | y.method::<u32>(44, 66); //~ ERROR [^0, ^1, u32] |
