diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/effects/tfuncs_cannot_mutate.nim | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/effects/tfuncs_cannot_mutate.nim b/tests/effects/tfuncs_cannot_mutate.nim new file mode 100644 index 000000000..ec3ad43f7 --- /dev/null +++ b/tests/effects/tfuncs_cannot_mutate.nim @@ -0,0 +1,31 @@ +discard """ + errormsg: "'mutate' can have side effects" + line: 25 +""" + +{.experimental: "strictFuncs".} + +type + Node = ref object + le, ri: Node + data: string + +func len(n: Node): int = + var it = n + while it != nil: + inc result + it = it.ri + +func doNotDistract(n: Node) = + var m = Node() + m.data = "abc" + +func select(a, b: Node): Node = b + +func mutate(n: Node) = + var it = n + let x = it + let y = x + let z = y + + select(x, z).data = "tricky" |