diff options
| author | John Hodge <tpg@mutabah.net> | 2016-11-20 18:26:07 +0800 |
|---|---|---|
| committer | John Hodge <tpg@mutabah.net> | 2016-11-20 18:26:07 +0800 |
| commit | 2be13ef87babbf098ac38158eb0151ee43c853c2 (patch) | |
| tree | b3b7014093cfe66bda87566deef9d4abf2bae4f3 | |
| parent | ff83719c892b297a6e7f5bdd12eac1e32b406420 (diff) | |
| download | mrust-2be13ef87babbf098ac38158eb0151ee43c853c2.tar.gz | |
HIR Expand Closures - Reborrow &mut variables
| -rw-r--r-- | src/hir_expand/closures.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/hir_expand/closures.cpp b/src/hir_expand/closures.cpp index da76cb79..eab96d8e 100644 --- a/src/hir_expand/closures.cpp +++ b/src/hir_expand/closures.cpp @@ -901,8 +901,16 @@ namespace { return ; } - if( usage == ::HIR::ValueUsage::Move && m_resolve.type_is_copy(sp, m_variable_types.at(slot)) ) { - usage = ::HIR::ValueUsage::Borrow; + + if( usage == ::HIR::ValueUsage::Move ) { + if( m_resolve.type_is_copy(sp, m_variable_types.at(slot)) ) { + usage = ::HIR::ValueUsage::Borrow; + } + else if( m_variable_types.at(slot).m_data.is_Borrow() && m_variable_types.at(slot).m_data.as_Borrow().type == ::HIR::BorrowType::Unique ) { + usage = ::HIR::ValueUsage::Mutate; + } + else { + } } assert(m_closure_stack.size() > 0 ); |
