summary refs log tree commit diff stats
path: root/tests/macros/tnodecompare.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/macros/tnodecompare.nim')
-rw-r--r--tests/macros/tnodecompare.nim39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/macros/tnodecompare.nim b/tests/macros/tnodecompare.nim
new file mode 100644
index 000000000..5ffb495b1
--- /dev/null
+++ b/tests/macros/tnodecompare.nim
@@ -0,0 +1,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