let ptr_ty = ptr.ty;
// Create an *internal* temp for the pointer, so that unsafety
// checking won't complain about the raw pointer assignment.
- let ptr_temp = this.local_decls.push(LocalDecl::with_source_info(
- ptr_ty,
- source_info,
- ).internal());
+ let ptr_temp = this
+ .local_decls
+ .push(LocalDecl::with_source_info(ptr_ty, source_info).internal());
let ptr_temp = Place::from(ptr_temp);
let block = unpack!(this.into(ptr_temp, block, ptr));
this.into(this.hir.tcx().mk_place_deref(ptr_temp), block, val)
Some((destination, success))
},
from_hir_call,
- fn_span
+ fn_span,
},
);
success.unit()
// These cases don't actually need a destination
ExprKind::Assign { .. }
| ExprKind::AssignOp { .. }
- | ExprKind::Continue { .. }
- | ExprKind::Break { .. }
- | ExprKind::LlvmInlineAsm { .. }
- | ExprKind::Return { .. } => {
+ | ExprKind::LlvmInlineAsm { .. } => {
unpack!(block = this.stmt_expr(block, expr, None));
this.cfg.push_assign_unit(block, source_info, destination, this.hir.tcx());
block.unit()
}
+ ExprKind::Continue { .. } | ExprKind::Break { .. } | ExprKind::Return { .. } => {
+ unpack!(block = this.stmt_expr(block, expr, None));
+ // No assign, as these have type `!`.
+ block.unit()
+ }
+
// Avoid creating a temporary
ExprKind::VarRef { .. }
| ExprKind::SelfRef
}
bb10: {
- _4 = const (); // scope 0 at $DIR/issue-49232.rs:10:25: 10:30
- // ty::Const
- // + ty: ()
- // + val: Value(Scalar(<ZST>))
- // mir::Constant
- // + span: $DIR/issue-49232.rs:10:25: 10:30
- // + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
unreachable; // scope 0 at $DIR/issue-49232.rs:10:25: 10:30
}