about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_mir/build/block.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/librustc_mir/build/block.rs b/src/librustc_mir/build/block.rs
index 02d2522b6ba..b2ab23024a8 100644
--- a/src/librustc_mir/build/block.rs
+++ b/src/librustc_mir/build/block.rs
@@ -125,11 +125,17 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> {
                                 })
                             }));
                     } else {
-                        this.visit_bindings(&pattern, &mut |this, _, _, node, span, _| {
-                            this.storage_live_binding(block, node, span);
+                        // FIXME: We currently only insert `UserAssertTy` statements for patterns
+                        // that are bindings, this is as we do not want to deconstruct the type
+                        // being assertion to match the pattern.
+                        if let PatternKind::Binding { var, .. } = *pattern.kind {
                             if let Some(ty) = ty {
-                                this.user_assert_ty(block, ty, node, span);
+                                this.user_assert_ty(block, ty, var, span);
                             }
+                        }
+
+                        this.visit_bindings(&pattern, &mut |this, _, _, node, span, _| {
+                            this.storage_live_binding(block, node, span);
                             this.schedule_drop_for_binding(node, span);
                         })
                     }