Fixed issue with multi-layer variable stacks.
This commit is contained in:
@@ -62,11 +62,12 @@ struct BodyTermTranslateVisitor
|
||||
std::vector<std::unique_ptr<ast::VariableDeclaration>> parameters;
|
||||
parameters.reserve(function.arguments.size());
|
||||
|
||||
variableStack.push(¶meters);
|
||||
|
||||
for (size_t i = 0; i < function.arguments.size(); i++)
|
||||
parameters.emplace_back(std::make_unique<ast::VariableDeclaration>(ast::VariableDeclaration::Type::Body));
|
||||
|
||||
// TODO: implement pushing with scoped guards to avoid bugs
|
||||
variableStack.push(¶meters);
|
||||
|
||||
ast::And conjunction;
|
||||
|
||||
for (size_t i = 0; i < function.arguments.size(); i++)
|
||||
@@ -75,6 +76,8 @@ struct BodyTermTranslateVisitor
|
||||
conjunction.arguments.emplace_back(ast::Formula::make<ast::In>(ast::Variable(parameters[i].get()), translate(argument, context, ruleContext, variableStack)));
|
||||
}
|
||||
|
||||
variableStack.pop();
|
||||
|
||||
ast::Predicate predicate(std::string(function.name));
|
||||
predicate.arguments.reserve(function.arguments.size());
|
||||
|
||||
|
Reference in New Issue
Block a user