summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-11-20 18:26:07 +0800
committerJohn Hodge <tpg@mutabah.net>2016-11-20 18:26:07 +0800
commit2be13ef87babbf098ac38158eb0151ee43c853c2 (patch)
treeb3b7014093cfe66bda87566deef9d4abf2bae4f3
parentff83719c892b297a6e7f5bdd12eac1e32b406420 (diff)
downloadmrust-2be13ef87babbf098ac38158eb0151ee43c853c2.tar.gz
HIR Expand Closures - Reborrow &mut variables
-rw-r--r--src/hir_expand/closures.cpp12
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 );