about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-01-28 00:52:21 +0100
committerJonas Schievink <jonasschievink@gmail.com>2020-01-28 17:28:19 +0100
commit474d0e33717062696be4c9799ce9822bf7b56fc2 (patch)
tree661f6a6b3bffecaab27b1f835d985c790d61c3e4
parentb181835a6bacfa449f55d46764a10e25d1c471dc (diff)
downloadrust-474d0e33717062696be4c9799ce9822bf7b56fc2.tar.gz
rust-474d0e33717062696be4c9799ce9822bf7b56fc2.zip
Add an early-exit to `QueryNormalizer::fold_ty`
-rw-r--r--src/librustc/traits/query/normalize.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/librustc/traits/query/normalize.rs b/src/librustc/traits/query/normalize.rs
index 8f23f98a2a4..20d7b556377 100644
--- a/src/librustc/traits/query/normalize.rs
+++ b/src/librustc/traits/query/normalize.rs
@@ -81,6 +81,10 @@ impl<'cx, 'tcx> TypeFolder<'tcx> for QueryNormalizer<'cx, 'tcx> {
     }
 
     fn fold_ty(&mut self, ty: Ty<'tcx>) -> Ty<'tcx> {
+        if !ty.has_projections() {
+            return ty;
+        }
+
         let ty = ty.super_fold_with(self);
         match ty.kind {
             ty::Opaque(def_id, substs) if !substs.has_escaping_bound_vars() => {