提交 fd169886 编写于 作者: B bors

Auto merge of #114648 - compiler-errors:perf-114604, r=lqd

Only resolve target type in `try_coerce` in new solver

Only needed in new solver, seems to affect perf in old solver.

cc #114604/#114594
......@@ -1007,15 +1007,17 @@ pub fn try_coerce(
&self,
expr: &hir::Expr<'_>,
expr_ty: Ty<'tcx>,
target: Ty<'tcx>,
mut target: Ty<'tcx>,
allow_two_phase: AllowTwoPhase,
cause: Option<ObligationCause<'tcx>>,
) -> RelateResult<'tcx, Ty<'tcx>> {
let source = self.try_structurally_resolve_type(expr.span, expr_ty);
let target = self.try_structurally_resolve_type(
cause.as_ref().map_or(expr.span, |cause| cause.span),
target,
);
if self.next_trait_solver() {
target = self.try_structurally_resolve_type(
cause.as_ref().map_or(expr.span, |cause| cause.span),
target,
);
}
debug!("coercion::try({:?}: {:?} -> {:?})", expr, source, target);
let cause =
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册