1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
import macros
static:
let nodeA = newCommentStmtNode("this is a comment")
doAssert nodeA.repr == "## this is a comment"
doAssert nodeA.strVal == "this is a comment"
doAssert $nodeA == "this is a comment"
let nodeB = newCommentStmtNode("this is a comment")
doAssert nodeA == nodeB
nodeB.strVal = "this is a different comment"
doAssert nodeA != nodeB
macro test(a: typed, b: typed): untyped =
newLit(a == b)
doAssert test(1, 1) == true
doAssert test(1, 2) == false
type
Obj = object of RootObj
Other = object of RootObj
doAssert test(Obj, Obj) == true
doAssert test(Obj, Other) == false
var a, b: int
doAssert test(a, a) == true
doAssert test(a, b) == false
macro test2: untyped =
newLit(bindSym"Obj" == bindSym"Obj")
macro test3: untyped =
newLit(bindSym"Obj" == bindSym"Other")
doAssert test2() == true
doAssert test3() == false
|