Skip to content

Commit bf437b2

Browse files
committed
class names aren't refs, fixes #287
1 parent 92b269c commit bf437b2

File tree

4 files changed

+91
-2
lines changed

4 files changed

+91
-2
lines changed

moonscript/transform/statement.lua

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,13 @@ return Transformer({
204204
local _continue_0 = false
205205
repeat
206206
local name = names[_index_0]
207-
if not (name[2]:match("^%u")) then
207+
local str_name
208+
if ntype(name) == "ref" then
209+
str_name = name[2]
210+
else
211+
str_name = name
212+
end
213+
if not (str_name:match("^%u")) then
208214
_continue_0 = true
209215
break
210216
end

moonscript/transform/statement.moon

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,12 @@ Transformer {
122122

123123
if node[2] == "^"
124124
names = for name in *names
125-
continue unless name[2]\match "^%u"
125+
str_name = if ntype(name) == "ref"
126+
name[2]
127+
else
128+
name
129+
130+
continue unless str_name\match "^%u"
126131
name
127132

128133
{"declare", names}

spec/inputs/local.moon

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,17 @@ do
7575
d = 2323
7676

7777

78+
do
79+
local ^
80+
lowercase = 5
81+
Uppercase = 3
82+
83+
class One
84+
Five = 6
85+
86+
class Two
87+
class No
88+
7889
do
7990
local *
8091
-- this generates a nil value in the body

spec/outputs/local.lua

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,73 @@ do
7070
d = 200
7171
d = 2323
7272
end
73+
do
74+
local Uppercase, One, Two
75+
local lowercase = 5
76+
Uppercase = 3
77+
do
78+
local _class_0
79+
local Five
80+
local _base_0 = { }
81+
_base_0.__index = _base_0
82+
_class_0 = setmetatable({
83+
__init = function() end,
84+
__base = _base_0,
85+
__name = "One"
86+
}, {
87+
__index = _base_0,
88+
__call = function(cls, ...)
89+
local _self_0 = setmetatable({}, _base_0)
90+
cls.__init(_self_0, ...)
91+
return _self_0
92+
end
93+
})
94+
_base_0.__class = _class_0
95+
local self = _class_0
96+
Five = 6
97+
One = _class_0
98+
end
99+
do
100+
local _class_0
101+
local No
102+
local _base_0 = { }
103+
_base_0.__index = _base_0
104+
_class_0 = setmetatable({
105+
__init = function() end,
106+
__base = _base_0,
107+
__name = "Two"
108+
}, {
109+
__index = _base_0,
110+
__call = function(cls, ...)
111+
local _self_0 = setmetatable({}, _base_0)
112+
cls.__init(_self_0, ...)
113+
return _self_0
114+
end
115+
})
116+
_base_0.__class = _class_0
117+
local self = _class_0
118+
do
119+
local _class_1
120+
local _base_1 = { }
121+
_base_1.__index = _base_1
122+
_class_1 = setmetatable({
123+
__init = function() end,
124+
__base = _base_1,
125+
__name = "No"
126+
}, {
127+
__index = _base_1,
128+
__call = function(cls, ...)
129+
local _self_0 = setmetatable({}, _base_1)
130+
cls.__init(_self_0, ...)
131+
return _self_0
132+
end
133+
})
134+
_base_1.__class = _class_1
135+
No = _class_1
136+
end
137+
Two = _class_0
138+
end
139+
end
73140
do
74141
local _list_0 = { }
75142
for _index_0 = 1, #_list_0 do

0 commit comments

Comments
 (0)