refs #17292 fix repr with do: (#17449)

* refs #17292 fix `repr` with `do:`

* address comment
This commit is contained in:
Timothee Cour
2021-03-23 00:34:04 -07:00
committed by GitHub
parent d78ebe4a0e
commit f3a6427109
2 changed files with 90 additions and 3 deletions

View File

@@ -6,6 +6,8 @@ discard """
# if excessive, could remove 'cpp' from targets
from strutils import endsWith, contains
from std/macros import newLit
macro deb(a): string = newLit a.repr
template main() =
doAssert repr({3,5}) == "{3, 5}"
@@ -65,5 +67,83 @@ template main() =
else:
doAssert reprOpenarray(arr) == "[1, 2, 3]"
block: # bug #17292
template foo(a, b, c, d) = discard
block:
let a = deb:
foo(1, 2, 3, 4)
doAssert a == "\nfoo(1, 2, 3, 4)"
block:
let a = deb:
foo(1, 2, 3): 4
doAssert a == """
foo(1, 2, 3):
4"""
block:
let a = deb:
foo(1, 2): 3
do: 4
doAssert a == """
foo(1, 2):
3
do:
4"""
block:
let a = deb:
foo(1): 3
do: 3
do: 4
doAssert a == """
foo(1):
3
do:
3
do:
4"""
block:
let a = deb:
foo(1):
3
do:
discard
3
do:
discard
4
doAssert a == """
foo(1):
3
do:
discard
3
do:
discard
4"""
block:
let a = deb:
foo: 1
do: 2
do: 3
do: 4
doAssert a == """
foo:
1
do:
2
do:
3
do:
4"""
static: main()
main()