diff options
| author | lcnr <rust@lcnr.de> | 2023-09-05 11:10:00 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2023-09-05 11:15:05 +0200 |
| commit | 98fa0c93ee031277e64eaee11fe9dbfe2147f532 (patch) | |
| tree | 88ff985858107d9c255062d30a6db1dd499c0f9e /compiler | |
| parent | 8cfaf70c320297dd1831a12351fcfeab7a231328 (diff) | |
| download | rust-98fa0c93ee031277e64eaee11fe9dbfe2147f532.tar.gz rust-98fa0c93ee031277e64eaee11fe9dbfe2147f532.zip | |
unconstrained region vars: do not ICE ICE baby
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/outlives_bounds.rs | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/outlives_bounds.rs b/compiler/rustc_trait_selection/src/traits/outlives_bounds.rs index 339baf611f3..32bbd626d4e 100644 --- a/compiler/rustc_trait_selection/src/traits/outlives_bounds.rs +++ b/compiler/rustc_trait_selection/src/traits/outlives_bounds.rs @@ -57,16 +57,12 @@ impl<'a, 'tcx: 'a> InferCtxtExt<'a, 'tcx> for InferCtxt<'tcx> { let ty = OpportunisticRegionResolver::new(self).fold_ty(ty); // We do not expect existential variables in implied bounds. - // We may however encounter unconstrained lifetime variables in invalid - // code. See #110161 for context. + // We may however encounter unconstrained lifetime variables + // in very rare cases. + // + // See `ui/implied-bounds/implied-bounds-unconstrained-2.rs` for + // an example. assert!(!ty.has_non_region_infer()); - if ty.has_infer() { - self.tcx.sess.delay_span_bug( - self.tcx.def_span(body_id), - "skipped implied_outlives_bounds due to unconstrained lifetimes", - ); - return vec![]; - } let mut canonical_var_values = OriginalQueryValues::default(); let canonical_ty = |
