mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-31 10:22:15 +00:00
40 lines
866 B
Nim
40 lines
866 B
Nim
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
|