diff options
-rw-r--r-- | compiler/patterns.nim | 2 | ||||
-rw-r--r-- | tests/trmacros/tnoalias2.nim | 19 |
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 |