diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/template/tdefaultparam.nim | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/template/tdefaultparam.nim b/tests/template/tdefaultparam.nim index ecbb0e145..7ea0b2b25 100644 --- a/tests/template/tdefaultparam.nim +++ b/tests/template/tdefaultparam.nim @@ -13,3 +13,44 @@ block: # issue #23506 a = $($x, $y) foo(1) doAssert a == "(\"1\", \"1\")" + +block: # untyped params with default value + macro foo(x: typed): untyped = + result = x + template test(body: untyped, alt: untyped = (;), maxTries = 3): untyped {.foo.} = + body + alt + var s = "a" + test: + s.add "b" + do: + s.add "c" + doAssert s == "abc" + template test2(body: untyped, alt: untyped = s.add("e"), maxTries = 3): untyped = + body + alt + test2: + s.add "d" + doAssert s == "abcde" + template test3(body: untyped = willNotCompile) = + discard + test3() + +block: # typed params with `void` default value + macro foo(x: typed): untyped = + result = x + template test(body: untyped, alt: typed = (;), maxTries = 3): untyped {.foo.} = + body + alt + var s = "a" + test: + s.add "b" + do: + s.add "c" + doAssert s == "abc" + template test2(body: untyped, alt: typed = s.add("e"), maxTries = 3): untyped = + body + alt + test2: + s.add "d" + doAssert s == "abcde" |