add test for js case clause scopes

This commit is contained in:
memoryruins 2020-07-14 12:38:47 -04:00
parent 1c6804f82b
commit 7ab00bd191
4 changed files with 33 additions and 0 deletions

View File

@ -131,6 +131,7 @@ nodeTests
, "node011", "node012", "node015", "node017", "node018", "node019" -- node014
, "node021" --, "node020"
, "reg001"
, "syntax001"
, "tailrec001"
]

View File

@ -0,0 +1,27 @@
module Main
-- When generating javasript from idris, it is possible that the same name may appear in
-- different clauses when translating cases from Idris. To avoid a javascript syntax error
-- from occuring due to duplicate declations, each case clause is wrapped in brackets
-- to create unique block scopes.
-- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch
-- Without wrapping in a block, the test error may look like the following:
-- syntax001/build/exec/_tmp_node.js:39
-- const x = ({h:1});
-- ^
-- SyntaxError: Identifier 'x' has already been declared
test : Bool -> Int
test x @ True =
case x of
_ => 0
test x @ False =
case x of
_ => 1
main : IO ()
main = do
printLn $ test True
printLn $ test False

View File

@ -0,0 +1,2 @@
0
1

3
tests/node/syntax001/run Normal file
View File

@ -0,0 +1,3 @@
$1 --cg node caseBlock.idr -x main
rm -rf build