Skip to content

Commit ceb2d60

Browse files
author
Derek Hower
committed
Nullify assignments in for loops for pruning
1 parent 29fdbf7 commit ceb2d60

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

lib/idl/passes/prune.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ def prune(symtab)
5151

5252
new_node
5353
end
54+
55+
def nullify_assignments(symtab)
56+
@children.each do |child|
57+
child.nullify_assignments(symtab)
58+
end
59+
end
60+
end
61+
class VariableAssignmentAst
62+
def nullify_assignments(symtab)
63+
symtab.get(lhs.text_value).value = nil
64+
end
5465
end
5566
class FunctionCallExpressionAst
5667
def prune(symtab)
@@ -78,6 +89,9 @@ class ForLoopAst
7889
def prune(symtab)
7990
symtab.push(self)
8091
symtab.add(init.lhs.name, Var.new(init.lhs.name, init.lhs_type(symtab)))
92+
93+
stmts.each { |stmt| stmt.nullify_assignments(symtab) }
94+
8195
begin
8296
new_loop =
8397
ForLoopAst.new(

0 commit comments

Comments
 (0)