summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-07-08 16:37:45 +0200
committerAraq <rumpf_a@web.de>2014-07-08 16:37:45 +0200
commit39ce17a73e1e9f9e0eea0fa885a7969c96f1a3b4 (patch)
treed8e2df9cca6a017b789a67e8486a2721da39b68b
parentd3c79cec803dab88279e6657ccd10f612a3633c0 (diff)
downloadNim-39ce17a73e1e9f9e0eea0fa885a7969c96f1a3b4.tar.gz
fixes #933
-rw-r--r--compiler/vm.nim5
-rw-r--r--tests/macros/tbug1149.nim18
2 files changed, 18 insertions, 5 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim
index f879e36bc..155617edb 100644
--- a/compiler/vm.nim
+++ b/compiler/vm.nim
@@ -671,14 +671,11 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
     of opcLtu:
       decodeBC(rkInt)
       regs[ra].intVal = ord(regs[rb].intVal <% regs[rc].intVal)
-    of opcEqRef:
+    of opcEqRef, opcEqNimrodNode:
       decodeBC(rkInt)
       regs[ra].intVal = ord((regs[rb].node.kind == nkNilLit and
                              regs[rc].node.kind == nkNilLit) or
                              regs[rb].node == regs[rc].node)
-    of opcEqNimrodNode:
-      decodeBC(rkInt)
-      regs[ra].intVal = ord(regs[rb].node == regs[rc].node)
     of opcXor:
       decodeBC(rkInt)
       regs[ra].intVal = ord(regs[rb].intVal != regs[rc].intVal)
diff --git a/tests/macros/tbug1149.nim b/tests/macros/tbug1149.nim
index d2bff61d3..3318fbfd8 100644
--- a/tests/macros/tbug1149.nim
+++ b/tests/macros/tbug1149.nim
@@ -6,7 +6,10 @@ f
 TTaa
 TTaa
 TTaa
-TTaa'''
+TTaa
+true
+true
+nil'''
 
 output: '''test'''
 """
@@ -62,3 +65,16 @@ macro m(s:static[Td]) : stmt =
 const s=("TT", 3)
 m(s)
 m(s)
+
+# bug #933
+
+proc nilcheck(): PNimrodNode {.compileTime.} =
+  echo(result == nil) # true
+  echo(result.isNil) # true
+  echo(repr(result)) # nil
+
+macro testnilcheck(): stmt =
+  result = newNimNode(nnkStmtList)
+  discard nilcheck()
+
+testnilcheck()