diff options
| author | Michael Goulet <michael@errs.io> | 2022-10-24 19:39:19 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-11-18 17:40:14 +0000 |
| commit | b8a92c1dd66c46a5150d2b899294d682683d87e2 (patch) | |
| tree | 65dacba40228a162d2d6c45f1a9141cedbfd2679 | |
| parent | fd3bfb35511cbcff59ce1454d3db627b576d7e92 (diff) | |
| download | rust-b8a92c1dd66c46a5150d2b899294d682683d87e2.tar.gz rust-b8a92c1dd66c46a5150d2b899294d682683d87e2.zip | |
Revert "Normalize opaques with escaping bound vars"
This reverts commit 43119d643857efc366bfca527ac2dadfc3f2e906.
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/project.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/query/normalize.rs | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/project.rs b/compiler/rustc_trait_selection/src/traits/project.rs index ede6cd607b7..528b98cf4a1 100644 --- a/compiler/rustc_trait_selection/src/traits/project.rs +++ b/compiler/rustc_trait_selection/src/traits/project.rs @@ -508,7 +508,7 @@ impl<'a, 'b, 'tcx> TypeFolder<'tcx> for AssocTypeNormalizer<'a, 'b, 'tcx> { // This is really important. While we *can* handle this, this has // severe performance implications for large opaque types with // late-bound regions. See `issue-88862` benchmark. - ty::Opaque(def_id, substs) => { + ty::Opaque(def_id, substs) if !substs.has_escaping_bound_vars() => { // Only normalize `impl Trait` outside of type inference, usually in codegen. match self.param_env.reveal() { Reveal::UserFacing => ty.super_fold_with(self), diff --git a/compiler/rustc_trait_selection/src/traits/query/normalize.rs b/compiler/rustc_trait_selection/src/traits/query/normalize.rs index f5c98558a25..a875ea1578d 100644 --- a/compiler/rustc_trait_selection/src/traits/query/normalize.rs +++ b/compiler/rustc_trait_selection/src/traits/query/normalize.rs @@ -198,7 +198,7 @@ impl<'cx, 'tcx> FallibleTypeFolder<'tcx> for QueryNormalizer<'cx, 'tcx> { // This is really important. While we *can* handle this, this has // severe performance implications for large opaque types with // late-bound regions. See `issue-88862` benchmark. - ty::Opaque(def_id, substs) => { + ty::Opaque(def_id, substs) if !substs.has_escaping_bound_vars() => { // Only normalize `impl Trait` outside of type inference, usually in codegen. match self.param_env.reveal() { Reveal::UserFacing => ty.try_super_fold_with(self), |
