Skip to content
Snippets Groups Projects
Commit 202bc08b authored by Julien Lopez's avatar Julien Lopez
Browse files

Fix in GreedyReduce

parent 4fc63676
No related branches found
No related tags found
No related merge requests found
......@@ -74,7 +74,12 @@ final class QIRGreedyReduceVisitor implements IQIRVisitor<QIRNode> {
@Override
public final QIRNode visit(final QIRLambda qirLambda) {
return new QIRLambda(qirLambda.sourceSection, qirLambda.funName, qirLambda.var, qirLambda.body.accept(this), qirLambda.target.getRootNode().getFrameDescriptor());
if (qirLambda.var == null || !env.containsKey(qirLambda.var.id))
return new QIRLambda(qirLambda.sourceSection, qirLambda.funName, qirLambda.var, qirLambda.body.accept(this), qirLambda.target.getRootNode().getFrameDescriptor());
final QIRNode value = env.remove(qirLambda.var.id);
final QIRLambda res = new QIRLambda(qirLambda.sourceSection, qirLambda.funName, qirLambda.var, qirLambda.body.accept(this), qirLambda.target.getRootNode().getFrameDescriptor());
env.put(qirLambda.var.id, value);
return res;
}
@Override
......@@ -90,9 +95,9 @@ final class QIRGreedyReduceVisitor implements IQIRVisitor<QIRNode> {
return fun.body;
final String varName = var.id;
env.put(varName, right);
final QIRLambda res = (QIRLambda) fun.accept(this);
final QIRNode res = fun.body.accept(this);
env.remove(varName);
return res.body;
return res;
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment