summaryrefslogtreecommitdiff
path: root/src/hir_expand/reborrow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir_expand/reborrow.cpp')
-rw-r--r--src/hir_expand/reborrow.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/hir_expand/reborrow.cpp b/src/hir_expand/reborrow.cpp
index 7e305937..8395f340 100644
--- a/src/hir_expand/reborrow.cpp
+++ b/src/hir_expand/reborrow.cpp
@@ -79,6 +79,8 @@ namespace {
else
{
// Not a node that should have reborrow applied (likely generated an owned &mut)
+ const auto* node = node_ptr.get();
+ DEBUG("Node " << node << " " << typeid(*node).name() << " cannot have a reborrow");
}
}
)
@@ -86,6 +88,7 @@ namespace {
}
void visit(::HIR::ExprNode_Assign& node) override {
+ ::HIR::ExprVisitorDef::visit(node);
node.m_value = do_reborrow(mv$(node.m_value));
}
void visit(::HIR::ExprNode_CallPath& node) override {
@@ -135,6 +138,12 @@ namespace {
::HIR::ExprVisitorDef::visit(node);
node.m_value = do_reborrow(mv$(node.m_value));
}
+ void visit(::HIR::ExprNode_Closure& node) override {
+ ::HIR::ExprVisitorDef::visit(node);
+ for(auto& arg : node.m_captures) {
+ arg = do_reborrow(mv$(arg));
+ }
+ }
};
class OuterVisitor:
public ::HIR::Visitor