Skip to content

Commit f2af5fc

Browse files
committed
Ensure 'special' names like true, false, nil are not treated as variables
1 parent 94d0d9d commit f2af5fc

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

transform.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def find_vars(e, scopes, env, freq, in_lambda = false, in_assign = false)
130130
vars2, env2 = find_vars(n[2..-1], scopes + [Set.new],env, freq, in_lambda)
131131
env = env1 + env2
132132
vars = vars1+vars2
133-
vars.each {|v| push_var(scopes,env,v) }
133+
vars.each {|v| push_var(scopes,env,v) if !is_special_name?(v) }
134134
elsif n[0] == :lambda
135135
vars, env = find_vars(n[2], scopes + [Set.new],env, freq, true)
136136
n[2] = E[n.position,:let, vars, *n[2]] if n[2]
@@ -161,7 +161,7 @@ def find_vars(e, scopes, env, freq, in_lambda = false, in_assign = false)
161161
sc = in_scopes(scopes,n)
162162
freq[n] += 1 if !is_special_name?(n)
163163
if sc.size == 0
164-
push_var(scopes,env,n) if in_assign
164+
push_var(scopes,env,n) if in_assign && !is_special_name?(n)
165165
elsif in_lambda
166166
sc.first.delete(n)
167167
env << n

0 commit comments

Comments
 (0)