improved comment satement support in macros (#5904)
This commit is contained in:
parent
da52ade86e
commit
eb8e267ff6
4 changed files with 29 additions and 20 deletions
|
|
@ -1,33 +1,33 @@
|
|||
discard """
|
||||
output: '''true
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
false'''
|
||||
"""
|
||||
|
||||
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): expr =
|
||||
newLit(a == b)
|
||||
|
||||
echo test(1, 1)
|
||||
echo test(1, 2)
|
||||
doAssert test(1, 1) == true
|
||||
doAssert test(1, 2) == false
|
||||
|
||||
type
|
||||
Obj = object of RootObj
|
||||
Other = object of RootObj
|
||||
|
||||
echo test(Obj, Obj)
|
||||
echo test(Obj, Other)
|
||||
doAssert test(Obj, Obj) == true
|
||||
doAssert test(Obj, Other) == false
|
||||
|
||||
var a, b: int
|
||||
|
||||
echo test(a, a)
|
||||
echo test(a, b)
|
||||
doAssert test(a, a) == true
|
||||
doAssert test(a, b) == false
|
||||
|
||||
macro test2: expr =
|
||||
newLit(bindSym"Obj" == bindSym"Obj")
|
||||
|
|
@ -35,5 +35,5 @@ macro test2: expr =
|
|||
macro test3: expr =
|
||||
newLit(bindSym"Obj" == bindSym"Other")
|
||||
|
||||
echo test2()
|
||||
echo test3()
|
||||
doAssert test2() == true
|
||||
doAssert test3() == false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue