diff options
Diffstat (limited to 'tests/template/utemplates.nim')
-rw-r--r-- | tests/template/utemplates.nim | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/template/utemplates.nim b/tests/template/utemplates.nim new file mode 100644 index 000000000..d70746578 --- /dev/null +++ b/tests/template/utemplates.nim @@ -0,0 +1,36 @@ +import unittest + +template t(a: int): string = "int" +template t(a: string): string = "string" + +block: # templates can be overloaded + check t(10) == "int" + check t("test") == "string" + +block: # previous definitions can be further overloaded or hidden in local scopes + template t(a: bool): string = "bool" + + check t(true) == "bool" + check t(10) == "int" + + template t(a: int): string = "inner int" + check t(10) == "inner int" + check t("test") == "string" + +block: # templates can be redefined multiple times + template customAssert(cond: bool, msg: string): typed {.dirty.} = + if not cond: fail(msg) + + template assertionFailed(body: untyped) {.dirty.} = + template fail(msg: string): typed {.redefine.} = + body + + assertionFailed: + check(msg == "first fail path") + + customAssert false, "first fail path" + + assertionFailed: + check(msg == "second fail path") + + customAssert false, "second fail path" |