diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-10-08 09:46:57 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-10-08 09:56:05 -0700 |
| commit | d0eea6ff6dbdab88ddbcf0ce2dcbbfd456678e39 (patch) | |
| tree | e2a8a2ad6cc7063d580c4c11bd7ca7904fa3b5a3 /src | |
| parent | ac9025c1979d0b4019d90a8ab7ad4336d468a0de (diff) | |
| download | rust-d0eea6ff6dbdab88ddbcf0ce2dcbbfd456678e39.tar.gz rust-d0eea6ff6dbdab88ddbcf0ce2dcbbfd456678e39.zip | |
review comments
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/hir/mod.rs | 12 | ||||
| -rw-r--r-- | src/librustc_typeck/check/demand.rs | 2 |
2 files changed, 5 insertions, 9 deletions
diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index ead7a08c397..1f792ecc2da 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -1555,15 +1555,11 @@ impl Expr { /// `ExprKind` of any given `Expr` for presentation don't have to care about `DropTemps` /// beyond remembering to call this function before doing analysis on it. pub fn peel_drop_temps(&self) -> &Self { - let mut base_expr = self; - loop { - match &base_expr.kind { - ExprKind::DropTemps(expr) => { - base_expr = &expr; - } - _ => return base_expr, - } + let mut expr = self; + while let ExprKind::DropTemps(inner) = &expr.kind { + expr = inner; } + expr } } diff --git a/src/librustc_typeck/check/demand.rs b/src/librustc_typeck/check/demand.rs index 2b672c96dfa..d92ea7fd49a 100644 --- a/src/librustc_typeck/check/demand.rs +++ b/src/librustc_typeck/check/demand.rs @@ -109,13 +109,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { allow_two_phase: AllowTwoPhase) -> (Ty<'tcx>, Option<DiagnosticBuilder<'tcx>>) { let expected = self.resolve_type_vars_with_obligations(expected); - let expr = expr.peel_drop_temps(); let e = match self.try_coerce(expr, checked_ty, expected, allow_two_phase) { Ok(ty) => return (ty, None), Err(e) => e }; + let expr = expr.peel_drop_temps(); let cause = self.misc(expr.span); let expr_ty = self.resolve_type_vars_with_obligations(checked_ty); let mut err = self.report_mismatched_types(&cause, expected, expr_ty, e); |
