summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hir_expand/closures.cpp2
-rw-r--r--src/hir_expand/reborrow.cpp4
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));