1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- discard """
- targets: "c cpp js"
- """
- type Result = enum none, a, b, c, d, e, f
- proc foo1(x: cstring): Result =
- const y = cstring"hash"
- const arr = [cstring"it", cstring"finally"]
- result = none
- case x
- of "Andreas", "Rumpf": result = a
- of cstring"aa", "bb": result = b
- of "cc", y, "when": result = c
- of "will", arr, "be", "generated": result = d
- of nil: result = f
- var results = [
- foo1("Rumpf"), foo1("Andreas"),
- foo1("aa"), foo1(cstring"bb"),
- foo1("cc"), foo1("hash"),
- foo1("finally"), foo1("generated"),
- foo1("no"), foo1("another no"),
- foo1(nil)]
- doAssert results == [a, a, b, b, c, c, d, d, none, none, f], $results
- proc foo2(x: cstring): Result =
- const y = cstring"hash"
- const arr = [cstring"it", cstring"finally"]
- doAssert not (compiles do:
- result = case x
- of "Andreas", "Rumpf": a
- of cstring"aa", "bb": b
- of "cc", y, "when": c
- of "will", arr, "be", "generated": d)
- case x
- of "Andreas", "Rumpf": a
- of cstring"aa", "bb": b
- of "cc", y, "when": c
- of "will", arr, "be", "generated": d
- of nil: f
- else: e
- results = [
- foo2("Rumpf"), foo2("Andreas"),
- foo2("aa"), foo2(cstring"bb"),
- foo2("cc"), foo2("hash"),
- foo2("finally"), foo2("generated"),
- foo2("no"), foo2("another no"),
- foo2(nil)]
- doAssert results == [a, a, b, b, c, c, d, d, e, e, f], $results
|