new tester; all tests categorized
This commit is contained in:
parent
51ee524109
commit
20b5f31c03
481 changed files with 794 additions and 2506 deletions
33
tests/macros/tdumpast.nim
Normal file
33
tests/macros/tdumpast.nim
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# Dump the contents of a PNimrodNode
|
||||
|
||||
import macros
|
||||
|
||||
template plus(a, b: expr): expr =
|
||||
a + b
|
||||
|
||||
macro call(e: expr): expr =
|
||||
result = newCall("foo", newStrLitNode("bar"))
|
||||
|
||||
macro dumpAST(n: stmt): stmt {.immediate.} =
|
||||
# dump AST as a side-effect and return the inner node
|
||||
let n = callsite()
|
||||
echo n.lispRepr
|
||||
echo n.treeRepr
|
||||
|
||||
var plusAst = getAst(plus(1, 2))
|
||||
echo plusAst.lispRepr
|
||||
|
||||
var callAst = getAst(call())
|
||||
echo callAst.lispRepr
|
||||
|
||||
var e = parseExpr("foo(bar + baz)")
|
||||
echo e.lispRepr
|
||||
|
||||
result = n[1]
|
||||
|
||||
dumpAST:
|
||||
proc add(x, y: int): int =
|
||||
return x + y
|
||||
|
||||
proc sub(x, y: int): int = return x - y
|
||||
|
||||
36
tests/macros/tdumpast2.nim
Normal file
36
tests/macros/tdumpast2.nim
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# Dump the contents of a PNimrodNode
|
||||
|
||||
import macros
|
||||
|
||||
proc dumpit(n: PNimrodNode): string {.compileTime.} =
|
||||
if n == nil: return "nil"
|
||||
result = $n.kind
|
||||
add(result, "(")
|
||||
case n.kind
|
||||
of nnkEmpty: nil # same as nil node in this representation
|
||||
of nnkNilLit: add(result, "nil")
|
||||
of nnkCharLit..nnkInt64Lit: add(result, $n.intVal)
|
||||
of nnkFloatLit..nnkFloat64Lit: add(result, $n.floatVal)
|
||||
of nnkStrLit..nnkTripleStrLit: add(result, $n.strVal)
|
||||
of nnkIdent: add(result, $n.ident)
|
||||
of nnkSym, nnkNone: assert false
|
||||
else:
|
||||
add(result, dumpit(n[0]))
|
||||
for j in 1..n.len-1:
|
||||
add(result, ", ")
|
||||
add(result, dumpit(n[j]))
|
||||
add(result, ")")
|
||||
|
||||
macro dumpAST(n: stmt): stmt {.immediate.} =
|
||||
# dump AST as a side-effect and return the inner node
|
||||
let n = callsite()
|
||||
echo dumpit(n)
|
||||
result = n[1]
|
||||
|
||||
dumpAST:
|
||||
proc add(x, y: int): int =
|
||||
return x + y
|
||||
|
||||
proc sub(x, y: int): int = return x - y
|
||||
|
||||
|
||||
27
tests/macros/tdumptree.nim
Normal file
27
tests/macros/tdumptree.nim
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
discard """
|
||||
disabled: true
|
||||
output: '''StmtList
|
||||
VarSection
|
||||
IdentDefs
|
||||
Ident !"x"
|
||||
nil
|
||||
Call
|
||||
DotExpr
|
||||
Ident !"foo"
|
||||
Ident !"create"
|
||||
IntLit 56'''
|
||||
"""
|
||||
|
||||
# disabled; can't work as the output is done by the compiler
|
||||
|
||||
import macros
|
||||
|
||||
#emit("type\n TFoo = object\n bar: int")
|
||||
|
||||
#var f: TFoo
|
||||
#f.bar = 5
|
||||
#echo(f.bar)
|
||||
|
||||
dumpTree:
|
||||
var x = foo.create(56)
|
||||
|
||||
19
tests/macros/tidgen.nim
Normal file
19
tests/macros/tidgen.nim
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
discard """
|
||||
output: "3 4"
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
# Test compile-time state in same module
|
||||
|
||||
var gid {.compileTime.} = 3
|
||||
|
||||
macro genId(): expr =
|
||||
result = newIntLitNode(gid)
|
||||
inc gid
|
||||
|
||||
proc Id1(): int {.compileTime.} = return genId()
|
||||
proc Id2(): int {.compileTime.} = return genId()
|
||||
|
||||
echo Id1(), " ", Id2()
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue