summary refs log tree commit diff stats
path: root/compiler/vmdef.nim
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 /compiler/vmdef.nim
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 'compiler/vmdef.nim')
-rw-r--r--compiler/vmdef.nim5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/vmdef.nim b/compiler/vmdef.nim
index 2d0272cd7..6900b17c2 100644
--- a/compiler/vmdef.nim
+++ b/compiler/vmdef.nim
@@ -60,8 +60,9 @@ type
     opcAddFloat, opcSubFloat, opcMulFloat, opcDivFloat, opcShrInt, opcShlInt,
     opcBitandInt, opcBitorInt, opcBitxorInt, opcAddu, opcSubu, opcMulu,
     opcDivu, opcModu, opcEqInt, opcLeInt, opcLtInt, opcEqFloat,
-    opcLeFloat, opcLtFloat, opcLeu, opcLtu, opcEqRef, opcEqNimrodNode, opcXor,
-    opcNot, opcUnaryMinusInt, opcUnaryMinusFloat, opcBitnotInt,
+    opcLeFloat, opcLtFloat, opcLeu, opcLtu,
+    opcEqRef, opcEqNimrodNode, opcSameNodeType,
+    opcXor, opcNot, opcUnaryMinusInt, opcUnaryMinusFloat, opcBitnotInt,
     opcEqStr, opcLeStr, opcLtStr, opcEqSet, opcLeSet, opcLtSet,
     opcMulSet, opcPlusSet, opcMinusSet, opcSymdiffSet, opcConcatStr,
     opcContainsSet, opcRepr, opcSetLenStr, opcSetLenSeq,