summaryrefslogtreecommitdiff
path: root/src/mir/from_hir.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2017-02-04 11:55:51 +0800
committerJohn Hodge <tpg@mutabah.net>2017-02-04 11:55:51 +0800
commita5035a65c2291560e32d5529dc06c90ae45e851f (patch)
tree0c7ac9105e52f95a020e8bc6c30c98fa2e87392c /src/mir/from_hir.cpp
parent6198cd3a6cfff4df26740c6482745badaaf2cce7 (diff)
downloadmrust-a5035a65c2291560e32d5529dc06c90ae45e851f.tar.gz
MIR Gen - Tweak to handle `foo(break)`
Diffstat (limited to 'src/mir/from_hir.cpp')
-rw-r--r--src/mir/from_hir.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mir/from_hir.cpp b/src/mir/from_hir.cpp
index 5a0efc29..95b2d5dc 100644
--- a/src/mir/from_hir.cpp
+++ b/src/mir/from_hir.cpp
@@ -1514,13 +1514,16 @@ namespace {
if( node.m_args.size() == 1 )
{
- values.push_back( m_builder.get_result_in_lvalue(arg->span(), arg->m_res_type) );
+ values.push_back( m_builder.get_result_in_lvalue(arg->span(), arg->m_res_type, /*allow_missing_value=*/true) );
}
else
{
// NOTE: Have to allocate a new temporary because ordering matters
auto tmp = m_builder.new_temporary(arg->m_res_type);
- m_builder.push_stmt_assign( arg->span(), tmp.clone(), m_builder.get_result(arg->span()) );
+ if( m_builder.block_active() )
+ {
+ m_builder.push_stmt_assign( arg->span(), tmp.clone(), m_builder.get_result(arg->span()) );
+ }
values.push_back( mv$(tmp) );
}