when statements branches exit early (#17143)
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.
This commit is contained in:
parent
05711d95e0
commit
2aba116bbc
3 changed files with 72 additions and 0 deletions
47
tests/whenstmt/twhen.nim
Normal file
47
tests/whenstmt/twhen.nim
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
discard """
|
||||
nimout: '''
|
||||
nimvm - when
|
||||
nimvm - whenElif
|
||||
nimvm - whenElse
|
||||
'''
|
||||
output: '''
|
||||
when
|
||||
whenElif
|
||||
whenElse
|
||||
'''
|
||||
"""
|
||||
|
||||
# test both when and when nimvm to ensure proper evaluation
|
||||
|
||||
proc compileOrRuntimeProc(s: string) =
|
||||
when nimvm:
|
||||
echo "nimvm - " & s
|
||||
else:
|
||||
echo s
|
||||
|
||||
template output(s: string) =
|
||||
static:
|
||||
compileOrRuntimeProc(s)
|
||||
compileOrRuntimeProc(s)
|
||||
|
||||
when compiles(1):
|
||||
output("when")
|
||||
elif compiles(2):
|
||||
output("fail - whenElif")
|
||||
else:
|
||||
output("fail - whenElse")
|
||||
|
||||
when compiles(nonexistent):
|
||||
output("fail - when")
|
||||
elif compiles(1):
|
||||
output("whenElif")
|
||||
else:
|
||||
output("fail - whenElse")
|
||||
|
||||
when compiles(nonexistent):
|
||||
output("fail - when")
|
||||
elif compiles(nonexistent):
|
||||
output("fail - whenElif")
|
||||
else:
|
||||
output("whenElse")
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue