summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorAdam Strzelecki <ono@java.pl>2015-07-01 20:11:09 +0200
committerAdam Strzelecki <ono@java.pl>2015-07-03 11:11:10 +0200
commit1a0417fbe0d2fe61c05a68f14858b0da0e596c02 (patch)
treea5cb4f81baa1b766543b1db0bc54c6ba93b762a3 /lib
parent60ac5e3e76fe24e015782a081da3f04f0000ea5f (diff)
downloadNim-1a0417fbe0d2fe61c05a68f14858b0da0e596c02.tar.gz
macros: Introduce sameType(a, b) for node types
Previously introduced node comparison `==` was working somehow wrong on nodes
returned from getType(a), comparing just ids of the symbols.

Recently introduced `==` change 47dce2688633fad840a2f5e4073c531f1cd640ca
started comparing symbol nodes pointer-wise, thus strictly. Since getType(a)
always creates new symbol pointing to the type, comparing two such nodes using
`==` always returns false, even they point to the same type.

That is why we need a new sameType macro to be able to tell if these nodes
point to the same type.
Diffstat (limited to 'lib')
-rw-r--r--lib/core/macros.nim4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index 044020b2a..49def06f0 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -144,6 +144,10 @@ proc `==`*(a, b: NimIdent): bool {.magic: "EqIdent", noSideEffect.}
 proc `==`*(a, b: NimNode): bool {.magic: "EqNimrodNode", noSideEffect.}
   ## compares two Nim nodes
 
+proc sameType*(a, b: NimNode): bool {.magic: "SameNodeType", noSideEffect.}
+  ## compares two Nim nodes' types. Return true if the types are the same,
+  ## eg. true when comparing alias with original type.
+
 proc len*(n: NimNode): int {.magic: "NLen", noSideEffect.}
   ## returns the number of children of `n`.