Fix dead code elimination optimization removes assignment on shadowing module constants

This commit is contained in:
aNNiMON 2023-10-02 18:59:16 +03:00 committed by Victor Melnik
parent 1abcffda5d
commit 66d86a1b6c

View File

@ -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);