Skip to content

Commit 7400f95

Browse files
committed
No need to make a new fulfillment context
1 parent 2e1f7ab commit 7400f95

File tree

1 file changed

+4
-20
lines changed
  • compiler/rustc_hir_typeck/src

1 file changed

+4
-20
lines changed

compiler/rustc_hir_typeck/src/pat.rs

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ use rustc_span::source_map::Spanned;
2020
use rustc_span::symbol::{kw, sym, Ident};
2121
use rustc_span::{BytePos, Span, DUMMY_SP};
2222
use rustc_target::abi::FieldIdx;
23-
use rustc_trait_selection::traits::{
24-
error_reporting::TypeErrCtxtExt, ObligationCause, Pattern, StructurallyNormalizeExt,
25-
TraitEngine, TraitEngineExt,
26-
};
23+
use rustc_trait_selection::traits::{ObligationCause, Pattern};
2724
use ty::VariantDef;
2825

2926
use std::cmp;
@@ -1987,22 +1984,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
19871984
tcx.require_lang_item(hir::LangItem::DerefTarget, Some(span)),
19881985
[expected],
19891986
);
1990-
1991-
let mut fulfill_cx = <dyn TraitEngine<'_>>::new(&self.infcx);
1992-
let cause = self.pattern_cause(pat_info.top_info, span);
1993-
let normalized_ty = match self
1994-
.infcx
1995-
.at(&cause, self.param_env)
1996-
.structurally_normalize(ty, &mut *fulfill_cx)
1997-
{
1998-
Ok(normalized_ty) => normalized_ty,
1999-
Err(errors) => {
2000-
let reported = self.infcx.err_ctxt().report_fulfillment_errors(errors);
2001-
return Ty::new_error(tcx, reported);
2002-
}
2003-
};
2004-
2005-
let ty = self.resolve_vars_if_possible(normalized_ty);
1987+
let ty = self.normalize(span, ty);
1988+
let ty = self.try_structurally_resolve_type(span, ty);
1989+
let ty = self.resolve_vars_if_possible(ty);
20061990
self.check_pat(inner, ty, pat_info);
20071991
expected
20081992
}

0 commit comments

Comments
 (0)