new tester; all tests categorized

This commit is contained in:
Araq 2014-01-13 02:10:03 +01:00
commit 20b5f31c03
481 changed files with 794 additions and 2506 deletions

33
tests/macros/tdumpast.nim Normal file
View 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

View 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

View 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
View 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()