diff options
| author | lcnr <rust@lcnr.de> | 2023-05-18 15:00:30 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2023-05-18 15:00:30 +0200 |
| commit | 3e4ed61c0987d73af4c291b68cf76adfeaa349c6 (patch) | |
| tree | 68d6fb32b049b28070488e41edccfc2d45ee9946 | |
| parent | a673ad6b5746a6256cb898edb8b888163df1872c (diff) | |
| download | rust-3e4ed61c0987d73af4c291b68cf76adfeaa349c6.tar.gz rust-3e4ed61c0987d73af4c291b68cf76adfeaa349c6.zip | |
do not overwrite obligations
| -rw-r--r-- | compiler/rustc_infer/src/infer/opaque_types.rs | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/compiler/rustc_infer/src/infer/opaque_types.rs b/compiler/rustc_infer/src/infer/opaque_types.rs index 545310ad351..b88ba04b273 100644 --- a/compiler/rustc_infer/src/infer/opaque_types.rs +++ b/compiler/rustc_infer/src/infer/opaque_types.rs @@ -530,19 +530,18 @@ impl<'tcx> InferCtxt<'tcx> { // these are the same span, but not in cases like `-> (impl // Foo, impl Bar)`. let span = cause.span; - - let mut obligations = vec![]; let prev = self.inner.borrow_mut().opaque_types().register( OpaqueTypeKey { def_id, substs }, OpaqueHiddenType { ty: hidden_ty, span }, origin, ); - if let Some(prev) = prev { - obligations = self - .at(&cause, param_env) + let mut obligations = if let Some(prev) = prev { + self.at(&cause, param_env) .eq_exp(DefineOpaqueTypes::Yes, a_is_expected, prev, hidden_ty)? - .obligations; - } + .obligations + } else { + Vec::new() + }; let item_bounds = tcx.explicit_item_bounds(def_id); |
