diff --git a/src/librustc_mir/build/block.rs b/src/librustc_mir/build/block.rs index 02d2522b6ba9..b2ab23024a89 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 { + // 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, var, span); + } + } + this.visit_bindings(&pattern, &mut |this, _, _, node, span, _| { this.storage_live_binding(block, node, span); - if let Some(ty) = ty { - this.user_assert_ty(block, ty, node, span); - } this.schedule_drop_for_binding(node, span); }) }