From 420839ef1ea16ff67a84cbaa785c9d0b79e96b9a Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Wed, 26 Sep 2007 19:56:11 +0000 Subject: [PATCH] Rain: added tests for parsing else guards in alts --- frontends/ParseRainTest.hs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frontends/ParseRainTest.hs b/frontends/ParseRainTest.hs index 0f9bf16..88a8821 100644 --- a/frontends/ParseRainTest.hs +++ b/frontends/ParseRainTest.hs @@ -557,6 +557,14 @@ testAlt = ,pass("pri alt { c ? x {} d ? y {} }", RP.statement, assertEqual "testAlt 2" $ A.Alt m True $ A.Several m [ A.OnlyA m $ A.Alternative m (variable "c") (A.InputSimple m [A.InVariable m (variable "x")]) emptyBlock ,A.OnlyA m $ A.Alternative m (variable "d") (A.InputSimple m [A.InVariable m (variable "y")]) emptyBlock]) + --Fairly nonsensical, but valid: + ,pass("pri alt { else {} }", RP.statement, assertEqual "testAlt 3" $ A.Alt m True $ A.Several m [ + A.OnlyA m $ A.AlternativeSkip m (A.True m) emptyBlock]) + ,pass("pri alt { c ? x {} else {} }", RP.statement, assertEqual "testAlt 4" $ A.Alt m True $ A.Several m [ + A.OnlyA m $ A.Alternative m (variable "c") (A.InputSimple m [A.InVariable m (variable "x")]) emptyBlock + ,A.OnlyA m $ A.AlternativeSkip m (A.True m) emptyBlock]) + + ,fail("pri {}",RP.statement) ,fail("alt {}",RP.statement) @@ -569,6 +577,10 @@ testAlt = ,fail("pri alt { c ! x {} }",RP.statement) ,fail("pri alt { {} }",RP.statement) ,fail("pri alt { c = x {} }",RP.statement) + ,fail("pri alt { else {} c ? x {} }",RP.statement) + ,fail("pri alt { d ? y {} else {} c ? x {} }",RP.statement) + ,fail("pri alt { else {} else {} }",RP.statement) + ,fail("pri alt { d ? y {} else {} c ? x {} else {} }",RP.statement) ] testRun :: [ParseTest A.Process]