Added a dump macro for debugging
This commit is contained in:
parent
723bc158ce
commit
15f7094fde
2 changed files with 34 additions and 0 deletions
|
|
@ -177,3 +177,24 @@ macro `[]`*(lc: ListComprehension, comp, typ: untyped): untyped =
|
||||||
newIdentNode("@"),
|
newIdentNode("@"),
|
||||||
newNimNode(nnkBracket))),
|
newNimNode(nnkBracket))),
|
||||||
result))))
|
result))))
|
||||||
|
|
||||||
|
|
||||||
|
macro dump*(x: typed): untyped =
|
||||||
|
## Dumps the content of an expression, useful for debugging.
|
||||||
|
## It accepts any expression and prints a textual representation
|
||||||
|
## of the tree representing the expression - as it would appear in
|
||||||
|
## source code - together with the value of the expression.
|
||||||
|
##
|
||||||
|
## As an example,
|
||||||
|
##
|
||||||
|
## .. code-block:: nim
|
||||||
|
## let
|
||||||
|
## x = 10
|
||||||
|
## y = 20
|
||||||
|
## dump(x + y)
|
||||||
|
##
|
||||||
|
## will print ``x + y = 30``.
|
||||||
|
let s = x.toStrLit
|
||||||
|
let r = quote do:
|
||||||
|
debugEcho `s`, " = ", `x`
|
||||||
|
return r
|
||||||
13
tests/macros/tdump.nim
Normal file
13
tests/macros/tdump.nim
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
discard """
|
||||||
|
output: '''x = 10
|
||||||
|
x + y = 30
|
||||||
|
'''
|
||||||
|
"""
|
||||||
|
|
||||||
|
import future
|
||||||
|
|
||||||
|
let
|
||||||
|
x = 10
|
||||||
|
y = 20
|
||||||
|
dump x
|
||||||
|
dump(x + y)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue