summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-10-01 16:01:05 +0800
committerJohn Hodge <tpg@mutabah.net>2016-10-01 16:01:05 +0800
commit307e7704a977f023eb355ae1f03ba67a1084b39f (patch)
treee6f0d18788b47b8febe29706852ea974fa4df846
parentddf6c491e0cedd196ef46b2f698965c45227c4f7 (diff)
downloadmrust-307e7704a977f023eb355ae1f03ba67a1084b39f.tar.gz
Resolve Absolute - Fix closure args not being scoped to the closure
-rw-r--r--src/resolve/absolute.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/resolve/absolute.cpp b/src/resolve/absolute.cpp
index a47350b4..ee5d6b36 100644
--- a/src/resolve/absolute.cpp
+++ b/src/resolve/absolute.cpp
@@ -1610,13 +1610,18 @@ void Resolve_Absolute_ExprNode(Context& context, ::AST::ExprNode& node)
}
void visit(AST::ExprNode_Closure& node) override {
DEBUG("ExprNode_Closure");
+
Resolve_Absolute_Type(this->context, node.m_return);
+
+ this->context.push_block();
for( auto& arg : node.m_args ) {
Resolve_Absolute_Type(this->context, arg.second);
Resolve_Absolute_Pattern(this->context, false, arg.first);
}
node.m_code->visit(*this);
+
+ this->context.pop_block();
}
} expr_iter(context);