diff options
author | John Hodge <tpg@mutabah.net> | 2017-02-04 11:55:51 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2017-02-04 11:55:51 +0800 |
commit | a5035a65c2291560e32d5529dc06c90ae45e851f (patch) | |
tree | 0c7ac9105e52f95a020e8bc6c30c98fa2e87392c /src/mir/from_hir.cpp | |
parent | 6198cd3a6cfff4df26740c6482745badaaf2cce7 (diff) | |
download | mrust-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.cpp | 7 |
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) ); } |