summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2014-04-06 22:05:42 +0200
committerAraq <rumpf_a@web.de>2014-04-06 22:05:42 +0200
commit7c065bfadf472bd569773c98a50b8986136afb43 (patch)
tree6054ad79c3e442931d9280e011bad91a64735ced
parent5d6053173a0db2b4d0dd1c334c41075fe8d9850e (diff)
downloadNim-7c065bfadf472bd569773c98a50b8986136afb43.tar.gz
fixes #798
-rw-r--r--compiler/hlo.nim3
-rw-r--r--tests/trmacros/targlist.nim (renamed from tests/patterns/targlist.nim)0
-rw-r--r--tests/trmacros/tcse.nim (renamed from tests/patterns/tcse.nim)0
-rw-r--r--tests/trmacros/thoist.nim (renamed from tests/patterns/thoist.nim)0
-rw-r--r--tests/trmacros/tmatrix.nim (renamed from tests/patterns/tmatrix.nim)0
-rw-r--r--tests/trmacros/tnoalias.nim (renamed from tests/patterns/tnoalias.nim)0
-rw-r--r--tests/trmacros/tnoendlessrec.nim (renamed from tests/patterns/tnoendlessrec.nim)0
-rw-r--r--tests/trmacros/tor.nim (renamed from tests/patterns/tor.nim)9
-rw-r--r--tests/trmacros/tpartial.nim (renamed from tests/patterns/tpartial.nim)0
-rw-r--r--tests/trmacros/tpatterns.nim (renamed from tests/patterns/tpatterns.nim)0
-rw-r--r--tests/trmacros/tstar.nim (renamed from tests/patterns/tstar.nim)0
-rw-r--r--tests/trmacros/tstmtlist.nim (renamed from tests/patterns/tstmtlist.nim)0
12 files changed, 10 insertions, 2 deletions
diff --git a/compiler/hlo.nim b/compiler/hlo.nim
index 7982d4aa1..c75d6519f 100644
--- a/compiler/hlo.nim
+++ b/compiler/hlo.nim
@@ -68,7 +68,8 @@ proc hlo(c: PContext, n: PNode): PNode =
     result = n
   else:
     if n.kind in {nkFastAsgn, nkAsgn, nkIdentDefs, nkVarTuple} and
-        n.sons[0].kind == nkSym and sfGlobal in n.sons[0].sym.flags:
+        n.sons[0].kind == nkSym and 
+        {sfGlobal, sfPure} * n.sons[0].sym.flags == {sfGlobal, sfPure}:
       # do not optimize 'var g {.global} = re(...)' again!
       return n
     result = applyPatterns(c, n)
diff --git a/tests/patterns/targlist.nim b/tests/trmacros/targlist.nim
index e416edf0a..e416edf0a 100644
--- a/tests/patterns/targlist.nim
+++ b/tests/trmacros/targlist.nim
diff --git a/tests/patterns/tcse.nim b/tests/trmacros/tcse.nim
index ff04f7d83..ff04f7d83 100644
--- a/tests/patterns/tcse.nim
+++ b/tests/trmacros/tcse.nim
diff --git a/tests/patterns/thoist.nim b/tests/trmacros/thoist.nim
index 7d14c0abf..7d14c0abf 100644
--- a/tests/patterns/thoist.nim
+++ b/tests/trmacros/thoist.nim
diff --git a/tests/patterns/tmatrix.nim b/tests/trmacros/tmatrix.nim
index c825a7792..c825a7792 100644
--- a/tests/patterns/tmatrix.nim
+++ b/tests/trmacros/tmatrix.nim
diff --git a/tests/patterns/tnoalias.nim b/tests/trmacros/tnoalias.nim
index 1d5671362..1d5671362 100644
--- a/tests/patterns/tnoalias.nim
+++ b/tests/trmacros/tnoalias.nim
diff --git a/tests/patterns/tnoendlessrec.nim b/tests/trmacros/tnoendlessrec.nim
index 53891bcc0..53891bcc0 100644
--- a/tests/patterns/tnoendlessrec.nim
+++ b/tests/trmacros/tnoendlessrec.nim
diff --git a/tests/patterns/tor.nim b/tests/trmacros/tor.nim
index 833418919..dc72a96cd 100644
--- a/tests/patterns/tor.nim
+++ b/tests/trmacros/tor.nim
@@ -1,6 +1,7 @@
 discard """
   output: '''3060
-true'''
+true
+3'''
 """
 
 template arithOps: expr = (`+` | `-` | `*`)
@@ -19,3 +20,9 @@ var
   c = false
 a = b and a
 echo a
+
+# bug #798
+template t012{(0|1|2){x}}(x: expr): expr = x+1
+let z = 1
+# outputs 3 thanks to fixpoint iteration:
+echo z
diff --git a/tests/patterns/tpartial.nim b/tests/trmacros/tpartial.nim
index fdaa3414a..fdaa3414a 100644
--- a/tests/patterns/tpartial.nim
+++ b/tests/trmacros/tpartial.nim
diff --git a/tests/patterns/tpatterns.nim b/tests/trmacros/tpatterns.nim
index 6bc8772e3..6bc8772e3 100644
--- a/tests/patterns/tpatterns.nim
+++ b/tests/trmacros/tpatterns.nim
diff --git a/tests/patterns/tstar.nim b/tests/trmacros/tstar.nim
index 8443268f4..8443268f4 100644
--- a/tests/patterns/tstar.nim
+++ b/tests/trmacros/tstar.nim
diff --git a/tests/patterns/tstmtlist.nim b/tests/trmacros/tstmtlist.nim
index 20cb5d688..20cb5d688 100644
--- a/tests/patterns/tstmtlist.nim
+++ b/tests/trmacros/tstmtlist.nim