Skip to content

Commit e075c2f

Browse files
committed
local * doesn't grab names in nested scopes
1 parent cad4aea commit e075c2f

File tree

6 files changed

+41
-2
lines changed

6 files changed

+41
-2
lines changed

moonscript/compile.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,9 @@ do
336336
get = function(self, name)
337337
return self._state[name]
338338
end,
339+
get_current = function(self, name)
340+
return rawget(self._state, name)
341+
end,
339342
listen = function(self, name, fn)
340343
self._listeners[name] = fn
341344
end,

moonscript/compile.moon

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,9 @@ class Block
196196
get: (name) =>
197197
@_state[name]
198198

199+
get_current: (name) =>
200+
rawget @_state, name
201+
199202
listen: (name, fn) =>
200203
@_listeners[name] = fn
201204

moonscript/transform.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ local Statement = Transformer({
345345
assign = function(self, node)
346346
local names, values = unpack(node, 2)
347347
do
348-
local globber = self:get("name_glob")
348+
local globber = self:get_current("name_glob")
349349
if globber then
350350
local _list_0 = names
351351
for _index_0 = 1, #_list_0 do

moonscript/transform.moon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ Statement = Transformer {
164164
assign: (node) =>
165165
names, values = unpack node, 2
166166

167-
if globber = @get "name_glob"
167+
if globber = @get_current "name_glob"
168168
for name in *names
169169
if globber name
170170
@put_name name

tests/inputs/local.moon

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,20 @@ do
3333
local *
3434
x,y = "a", "b"
3535

36+
37+
do
38+
local *
39+
if something
40+
x = 2323
41+
42+
-- this is broken
43+
do
44+
local *
45+
do
46+
x = "one"
47+
48+
x = 100
49+
50+
do
51+
x = "two"
52+

tests/outputs/local.lua

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,20 @@ end
3030
do
3131
local x, y
3232
x, y = "a", "b"
33+
end
34+
do
35+
36+
if something then
37+
x = 2323
38+
end
39+
end
40+
do
41+
local x
42+
do
43+
x = "one"
44+
end
45+
x = 100
46+
do
47+
x = "two"
48+
end
3349
end

0 commit comments

Comments
 (0)