diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/hir_expand/closures.cpp | 2 | ||||
-rw-r--r-- | src/hir_expand/reborrow.cpp | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/hir_expand/closures.cpp b/src/hir_expand/closures.cpp index b58f2398..3b0fb6a4 100644 --- a/src/hir_expand/closures.cpp +++ b/src/hir_expand/closures.cpp @@ -943,6 +943,8 @@ namespace { if( m_resolve.type_is_copy(sp, m_variable_types.at(slot)) ) { usage = ::HIR::ValueUsage::Borrow; } + // Wait, is this valid? + // - Maybe it's needed becuase reborrow is after this pass? 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; } diff --git a/src/hir_expand/reborrow.cpp b/src/hir_expand/reborrow.cpp index b6f6aeb4..d1b08f54 100644 --- a/src/hir_expand/reborrow.cpp +++ b/src/hir_expand/reborrow.cpp @@ -87,6 +87,10 @@ namespace { return node_ptr; } + void visit(::HIR::ExprNode_Emplace& node) override { + ::HIR::ExprVisitorDef::visit(node); + node.m_value = do_reborrow(mv$(node.m_value)); + } void visit(::HIR::ExprNode_Assign& node) override { ::HIR::ExprVisitorDef::visit(node); node.m_value = do_reborrow(mv$(node.m_value)); |