fixes system.add for strict funcs (#15259)

* fixes system.add for strict funcs

* fixes #15248
This commit is contained in:
Andreas Rumpf 2020-09-03 12:59:34 +02:00 • committed by GitHub
commit 48f2997221
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 19 deletions

View file

@ -342,7 +342,7 @@ proc deps(c: var Partitions; dest, src: PNode) =
let destIsComplex = types.searchTypeFor(dest.typ, wrap) let destIsComplex = types.searchTypeFor(dest.typ, wrap)
for t in targets: for t in targets:
if dest.kind != nkSym: if dest.kind != nkSym and c.inNoSideEffectSection == 0:
potentialMutation(c, t, dest.info) potentialMutation(c, t, dest.info)
if destIsComplex: if destIsComplex:

View file

@ -1227,6 +1227,7 @@ proc add*[T](x: var seq[T], y: openArray[T]) {.noSideEffect.} =
## .. code-block:: Nim ## .. code-block:: Nim
## var s: seq[string] = @["test2","test2"] ## var s: seq[string] = @["test2","test2"]
## s.add("test") # s <- @[test2, test2, test] ## s.add("test") # s <- @[test2, test2, test]
{.noSideEffect.}:
let xl = x.len let xl = x.len
setLen(x, xl + y.len) setLen(x, xl + y.len)
for i in 0..high(y): x[xl+i] = y[i] for i in 0..high(y): x[xl+i] = y[i]
@ -1283,6 +1284,7 @@ proc insert*[T](x: var seq[T], item: sink T, i = 0.Natural) {.noSideEffect.} =
## .. code-block:: Nim ## .. code-block:: Nim
## var i = @[1, 3, 5] ## var i = @[1, 3, 5]
## i.insert(99, 0) # i <- @[99, 1, 3, 5] ## i.insert(99, 0) # i <- @[99, 1, 3, 5]
{.noSideEffect.}:
template defaultImpl = template defaultImpl =
let xl = x.len let xl = x.len
setLen(x, xl+1) setLen(x, xl+1)