mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Fix dead code elimination optimization removes assignment on shadowing module constants
This commit is contained in:
parent
1abcffda5d
commit
66d86a1b6c
@ -30,7 +30,7 @@ public class DeadCodeElimination extends OptimizationVisitor<Map<String, Variabl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Node optimize(Node node) {
|
public Node optimize(Node node) {
|
||||||
final Map<String, VariableInfo> variableInfos = VariablesGrabber.getInfo(node);
|
final Map<String, VariableInfo> variableInfos = VariablesGrabber.getInfo(node, true);
|
||||||
return node.accept(this, variableInfos);
|
return node.accept(this, variableInfos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ public class DeadCodeElimination extends OptimizationVisitor<Map<String, Variabl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Node visit(AssignmentExpression s, Map<String, VariableInfo> t) {
|
public Node visit(AssignmentExpression s, Map<String, VariableInfo> t) {
|
||||||
if (!isVariable((Node)s.target)) return super.visit(s, t);
|
if (!isVariable(s.target)) return super.visit(s, t);
|
||||||
|
|
||||||
final String variableName = ((VariableExpression) s.target).name;
|
final String variableName = ((VariableExpression) s.target).name;
|
||||||
if (!t.containsKey(variableName)) return super.visit(s, t);
|
if (!t.containsKey(variableName)) return super.visit(s, t);
|
||||||
|
Loading…
Reference in New Issue
Block a user