12345678910111213141516171819202122232425262728293031323334353637383940 |
- discard """
- errormsg: "'mutate' can have side effects"
- nimout: '''an object reachable from 'n' is potentially mutated
- tfuncs_cannot_mutate.nim(39, 15) the mutation is here
- tfuncs_cannot_mutate.nim(37, 7) is the statement that connected the mutation to the parameter
- '''
- """
- {.experimental: "strictFuncs".}
- type
- Node = ref object
- le, ri: Node
- data: string
- func insert(x: var seq[Node]; yyy: Node) =
- let L = x.len
- x.setLen L + 1
- x[L] = yyy
- 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"
|