about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-10-08 09:46:57 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-10-08 09:56:05 -0700
commitd0eea6ff6dbdab88ddbcf0ce2dcbbfd456678e39 (patch)
treee2a8a2ad6cc7063d580c4c11bd7ca7904fa3b5a3 /src
parentac9025c1979d0b4019d90a8ab7ad4336d468a0de (diff)
downloadrust-d0eea6ff6dbdab88ddbcf0ce2dcbbfd456678e39.tar.gz
rust-d0eea6ff6dbdab88ddbcf0ce2dcbbfd456678e39.zip
review comments
Diffstat (limited to 'src')
-rw-r--r--src/librustc/hir/mod.rs12
-rw-r--r--src/librustc_typeck/check/demand.rs2
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);