1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
discard """
cmd: '''nim c --gc:arc $file'''
output: '''
other
'''
"""
import std/macros
macro bigCaseStmt(arg: untyped): untyped =
result = nnkCaseStmt.newTree(arg)
# try to change 2000 to a bigger value if it doesn't crash
for x in 0 ..< 2000:
result.add nnkOfBranch.newTree(newStrLitNode($x), newStrLitNode($x))
result.add nnkElse.newTree(newStrLitNode("other"))
macro bigIfElseExpr(): untyped =
result = nnkIfExpr.newTree()
for x in 0 ..< 1000:
result.add nnkElifExpr.newTree(newLit(false), newStrLitNode($x))
result.add nnkElseExpr.newTree(newStrLitNode("other"))
proc test(arg: string): string =
echo bigIfElseExpr()
result = bigCaseStmt(arg)
discard test("test")
|