diff options
author | Araq <rumpf_a@web.de> | 2014-04-06 22:05:42 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-04-06 22:05:42 +0200 |
commit | 7c065bfadf472bd569773c98a50b8986136afb43 (patch) | |
tree | 6054ad79c3e442931d9280e011bad91a64735ced | |
parent | 5d6053173a0db2b4d0dd1c334c41075fe8d9850e (diff) | |
download | Nim-7c065bfadf472bd569773c98a50b8986136afb43.tar.gz |
fixes #798
-rw-r--r-- | compiler/hlo.nim | 3 | ||||
-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 |