mirror of
https://github.com/leafo/moonscript.git
synced 2025-01-09 00:04:22 +00:00
switch tests, parse switch non-cascade expression
This commit is contained in:
parent
7334678579
commit
3f6c1d517e
@ -340,6 +340,7 @@ local build_grammar = wrap_env(function()
|
|||||||
|
|
||||||
SimpleValue =
|
SimpleValue =
|
||||||
If +
|
If +
|
||||||
|
Switch +
|
||||||
With +
|
With +
|
||||||
ForEach + For + While +
|
ForEach + For + While +
|
||||||
sym"-" * -SomeSpace * Exp / mark"minus" +
|
sym"-" * -SomeSpace * Exp / mark"minus" +
|
||||||
|
@ -494,7 +494,6 @@ Statement = Transformer({
|
|||||||
end,
|
end,
|
||||||
switch = function(self, node, ret)
|
switch = function(self, node, ret)
|
||||||
local _, exp, conds = unpack(node)
|
local _, exp, conds = unpack(node)
|
||||||
print("compiling switch", ret)
|
|
||||||
local exp_name = NameProxy("exp")
|
local exp_name = NameProxy("exp")
|
||||||
local convert_cond
|
local convert_cond
|
||||||
convert_cond = function(cond)
|
convert_cond = function(cond)
|
||||||
|
@ -269,8 +269,6 @@ Statement = Transformer {
|
|||||||
|
|
||||||
switch: (node, ret) =>
|
switch: (node, ret) =>
|
||||||
_, exp, conds = unpack node
|
_, exp, conds = unpack node
|
||||||
print "compiling switch", ret
|
|
||||||
|
|
||||||
exp_name = NameProxy "exp"
|
exp_name = NameProxy "exp"
|
||||||
|
|
||||||
-- convert switch conds into if statment conds
|
-- convert switch conds into if statment conds
|
||||||
|
44
tests/inputs/switch.moon
Normal file
44
tests/inputs/switch.moon
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
switch value
|
||||||
|
when "cool"
|
||||||
|
print "hello world"
|
||||||
|
|
||||||
|
|
||||||
|
switch value
|
||||||
|
when "cool"
|
||||||
|
print "hello world"
|
||||||
|
else
|
||||||
|
print "okay rad"
|
||||||
|
|
||||||
|
|
||||||
|
switch value
|
||||||
|
when "cool"
|
||||||
|
print "hello world"
|
||||||
|
when "yeah"
|
||||||
|
[[FFFF]] + [[MMMM]]
|
||||||
|
when 2323 + 32434
|
||||||
|
print "okay"
|
||||||
|
else
|
||||||
|
print "okay rad"
|
||||||
|
|
||||||
|
out = switch value
|
||||||
|
when "cool" then print "hello world"
|
||||||
|
else print "okay rad"
|
||||||
|
|
||||||
|
out = switch value
|
||||||
|
when "cool" then xxxx
|
||||||
|
when "umm" then 34340
|
||||||
|
else error "this failed big time"
|
||||||
|
|
||||||
|
with something
|
||||||
|
switch \value!
|
||||||
|
when .okay
|
||||||
|
"world"
|
||||||
|
else
|
||||||
|
"yesh"
|
||||||
|
|
||||||
|
fix this
|
||||||
|
call_func switch something
|
||||||
|
when 1 then "yes"
|
||||||
|
else "no"
|
||||||
|
|
53
tests/outputs/switch.lua
Normal file
53
tests/outputs/switch.lua
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
local _exp_0 = value
|
||||||
|
if "cool" == _exp_0 then
|
||||||
|
print("hello world")
|
||||||
|
end
|
||||||
|
local _exp_1 = value
|
||||||
|
if "cool" == _exp_1 then
|
||||||
|
print("hello world")
|
||||||
|
else
|
||||||
|
print("okay rad")
|
||||||
|
end
|
||||||
|
local _exp_2 = value
|
||||||
|
if "cool" == _exp_2 then
|
||||||
|
print("hello world")
|
||||||
|
elseif "yeah" == _exp_2 then
|
||||||
|
local _ = [[FFFF]] + [[MMMM]]
|
||||||
|
elseif 2323 + 32434 == _exp_2 then
|
||||||
|
print("okay")
|
||||||
|
else
|
||||||
|
print("okay rad")
|
||||||
|
end
|
||||||
|
local out
|
||||||
|
local _exp_3 = value
|
||||||
|
if "cool" == _exp_3 then
|
||||||
|
out = print("hello world")
|
||||||
|
else
|
||||||
|
out = print("okay rad")
|
||||||
|
end
|
||||||
|
local _exp_4 = value
|
||||||
|
if "cool" == _exp_4 then
|
||||||
|
out = xxxx
|
||||||
|
elseif "umm" == _exp_4 then
|
||||||
|
out = 34340
|
||||||
|
else
|
||||||
|
out = error("this failed big time")
|
||||||
|
end
|
||||||
|
do
|
||||||
|
local _with_0 = something
|
||||||
|
local _exp_5 = _with_0:value()
|
||||||
|
if _with_0.okay == _exp_5 then
|
||||||
|
local _ = "world"
|
||||||
|
else
|
||||||
|
local _ = "yesh"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
fix(this)
|
||||||
|
call_func((function()
|
||||||
|
local _exp_5 = something
|
||||||
|
if 1 == _exp_5 then
|
||||||
|
return "yes"
|
||||||
|
else
|
||||||
|
return "no"
|
||||||
|
end
|
||||||
|
end)())
|
Loading…
Reference in New Issue
Block a user