summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/patterns.nim2
-rw-r--r--tests/trmacros/tnoalias2.nim19
2 files changed, 20 insertions, 1 deletions
diff --git a/compiler/patterns.nim b/compiler/patterns.nim
index 3d71aa4d1..9ac0988c5 100644
--- a/compiler/patterns.nim
+++ b/compiler/patterns.nim
@@ -260,7 +260,7 @@ proc applyRule*(c: PContext, s: PSym, n: PNode): PNode =
     # couldn't bind parameter:
     if isNil(x): return nil
     result.add(x)
-    if requiresAA: addToArgList(args, n)
+    if requiresAA: addToArgList(args, x)
   # perform alias analysis here:
   if requiresAA:
     for i in 1 .. < params.len:
diff --git a/tests/trmacros/tnoalias2.nim b/tests/trmacros/tnoalias2.nim
new file mode 100644
index 000000000..5a816acb9
--- /dev/null
+++ b/tests/trmacros/tnoalias2.nim
@@ -0,0 +1,19 @@
+discard """
+  output: '''0'''
+"""
+
+# bug #206
+template optimizeOut{testFunc(a, b)}(a: int, b: int{alias}) : expr = 0
+
+proc testFunc(a, b: int): int = result = a + b
+var testVar = 1
+echo testFunc(testVar, testVar)
+
+
+template ex{a = b + c}(a : int{noalias}, b, c : int) =
+  a = b
+  inc a, b
+  echo "came here"
+
+var x = 5
+x = x + x