Fix scope optimizations for ranged for and refs

Closes #383
This commit is contained in:
Jason Turner 2017-11-30 10:06:32 -07:00
parent dee2ce5c56
commit 56140608ef

View File

@ -97,7 +97,7 @@ namespace chaiscript {
template<typename T> template<typename T>
bool contains_var_decl_in_scope(const eval::AST_Node_Impl<T> &node) bool contains_var_decl_in_scope(const eval::AST_Node_Impl<T> &node)
{ {
if (node.identifier == AST_Node_Type::Var_Decl || node.identifier == AST_Node_Type::Assign_Decl) { if (node.identifier == AST_Node_Type::Var_Decl || node.identifier == AST_Node_Type::Assign_Decl || node.identifier == AST_Node_Type::Reference) {
return true; return true;
} }
@ -107,6 +107,7 @@ namespace chaiscript {
const auto &child = child_at(node, i); const auto &child = child_at(node, i);
if (child.identifier != AST_Node_Type::Block if (child.identifier != AST_Node_Type::Block
&& child.identifier != AST_Node_Type::For && child.identifier != AST_Node_Type::For
&& child.identifier != AST_Node_Type::Ranged_For
&& contains_var_decl_in_scope(child)) { && contains_var_decl_in_scope(child)) {
return true; return true;
} }