diff options
Diffstat (limited to 'src')
-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 ); |