implemented case expressions

This commit is contained in:
Zahary Karadjov
2012-10-01 23:48:37 +03:00
parent 92f70b08f9
commit 770d4a997e
8 changed files with 137 additions and 24 deletions

View File

@@ -0,0 +1,30 @@
discard """
file: "tcaseexpr1.nim"
line: 23
errormsg: "not all cases are covered"
line: 29
errormsg: "type mismatch: got (string) but expected 'int'"
"""
type
E = enum A, B, C
proc foo(x): auto =
return case x
of 1..9: "digit"
else: "number"
var r = foo(10)
var x = C
var t1 = case x:
of A: "a"
of B: "b"
var t2 = case x:
of A: 10
of B, C: "23"

View File

@@ -1,6 +1,6 @@
discard """
file: "tcasestm.nim"
output: "ayyy"
output: "ayyydd"
"""
# Test the case statement
@@ -22,16 +22,18 @@ of "aa", "bb": write(stdout, "Du bist nicht mein Meister")
of "cc", "hash", "when": nil
of "will", "it", "finally", "be", "generated": nil
case i
of 1..5, 8, 9: nil
of 6, 7: nil
elif x == "Ha":
nil
elif x == "yyy":
write(stdout, x)
else:
nil
var z = case i
of 1..5, 8, 9: "aa"
of 6, 7: "bb"
elif x == "Ha":
"cc"
elif x == "yyy":
write(stdout, x)
"dd"
else:
"zz"
echo z
#OUT ayyy