summary refs log tree commit diff
path: root/compiler/rustc_trait_selection/src
diff options
context:
space:
mode:
authorMatthew Jasper <mjjasper1@gmail.com>2021-01-15 20:45:38 +0000
committerMatthew Jasper <mjjasper1@gmail.com>2021-01-15 20:45:38 +0000
commit5db5d8f87e2d224df6feea200af371d13394f2be (patch)
tree9f08af448c052fe97864ad6e93b95bfd8e045086 /compiler/rustc_trait_selection/src
parente48eb37b9470a26748c916f7153569906f3c67bf (diff)
downloadrust-5db5d8f87e2d224df6feea200af371d13394f2be.tar.gz
rust-5db5d8f87e2d224df6feea200af371d13394f2be.zip
Make hitting the recursion limit in projection non-fatal
This is relied on by wundergraph.
Diffstat (limited to 'compiler/rustc_trait_selection/src')
-rw-r--r--compiler/rustc_trait_selection/src/traits/project.rs11
-rw-r--r--compiler/rustc_trait_selection/src/traits/select/mod.rs4
2 files changed, 3 insertions, 12 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/project.rs b/compiler/rustc_trait_selection/src/traits/project.rs
index fa0526445c1..f22b5b96616 100644
--- a/compiler/rustc_trait_selection/src/traits/project.rs
+++ b/compiler/rustc_trait_selection/src/traits/project.rs
@@ -736,14 +736,9 @@ fn project_type<'cx, 'tcx>(
 
     if !selcx.tcx().sess.recursion_limit().value_within_limit(obligation.recursion_depth) {
         debug!("project: overflow!");
-        match selcx.query_mode() {
-            super::TraitQueryMode::Standard => {
-                selcx.infcx().report_overflow_error(&obligation, true);
-            }
-            super::TraitQueryMode::Canonical => {
-                return Err(ProjectionTyError::TraitSelectionError(SelectionError::Overflow));
-            }
-        }
+        // This should really be an immediate error, but some existing code
+        // relies on being able to recover from this.
+        return Err(ProjectionTyError::TraitSelectionError(SelectionError::Overflow));
     }
 
     let obligation_trait_ref = &obligation.predicate.trait_ref(selcx.tcx());
diff --git a/compiler/rustc_trait_selection/src/traits/select/mod.rs b/compiler/rustc_trait_selection/src/traits/select/mod.rs
index 8ca540fc893..7221ce811d1 100644
--- a/compiler/rustc_trait_selection/src/traits/select/mod.rs
+++ b/compiler/rustc_trait_selection/src/traits/select/mod.rs
@@ -291,10 +291,6 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
         self.infcx.tcx
     }
 
-    pub(super) fn query_mode(&self) -> TraitQueryMode {
-        self.query_mode
-    }
-
     ///////////////////////////////////////////////////////////////////////////
     // Selection
     //