mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 18:02:05 +00:00
When statement branches exit early outside of nimvm. In nimvm it seems that all sides of the branches must be evaluated as the code gen happens at a later stage, this remains intact.
24 lines
477 B
Nim
24 lines
477 B
Nim
import macros
|
|
|
|
discard """
|
|
output: '''
|
|
when - test
|
|
'''
|
|
"""
|
|
|
|
# test that when stmt works from within a macro
|
|
|
|
macro output(s: string, xs: varargs[untyped]): auto =
|
|
result = quote do:
|
|
when compiles(`s`):
|
|
"when - " & `s`
|
|
elif compiles(`s`):
|
|
"elif - " & `s`
|
|
# should never get here so this should not break
|
|
broken.xs
|
|
else:
|
|
"else - " & `s`
|
|
# should never get here so this should not break
|
|
more.broken.xs
|
|
|
|
echo output("test") |