diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-09-16 23:24:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-16 23:24:17 +0200 |
commit | bc9967f05a4272eb35f543ba6422086b57320ad8 (patch) | |
tree | 7b3beacbcf4d21a9dbc1e0667a74828cc263835b | |
parent | d938c6411e399ee1c936fa7b9ee3a1b53ab65791 (diff) | |
download | Nim-bc9967f05a4272eb35f543ba6422086b57320ad8.tar.gz |
Revert "Introduce explicit copy (#15330)" (#15346)
This reverts commit a3e9cc52343a54cadc7b77b783e1c8b6ba2b327f.
-rw-r--r-- | compiler/injectdestructors.nim | 2 | ||||
-rw-r--r-- | lib/system.nim | 5 | ||||
-rw-r--r-- | tests/arc/tcopytosink_warning.nim | 22 |
3 files changed, 1 insertions, 28 deletions
diff --git a/compiler/injectdestructors.nim b/compiler/injectdestructors.nim index de28c9f70..9d1f43595 100644 --- a/compiler/injectdestructors.nim +++ b/compiler/injectdestructors.nim @@ -408,7 +408,7 @@ proc passCopyToSink(n: PNode; c: var Con; s: var Scope): PNode = if isLValue(n) and not isCapturedVar(n) and n.typ.skipTypes(abstractInst).kind != tyRef and c.inSpawn == 0: message(c.graph.config, n.info, hintPerformance, ("passing '$1' to a sink parameter introduces an implicit copy; " & - "if possible, rearrange your program's control flow to prevent it or use 'copy($1)' to hint the compiler it is intentional") % $n) + "if possible, rearrange your program's control flow to prevent it") % $n) else: if c.graph.config.selectedGC in {gcArc, gcOrc}: assert(not containsGarbageCollectedRef(n.typ)) diff --git a/lib/system.nim b/lib/system.nim index dbe0f11f7..c05ca24dc 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -264,11 +264,6 @@ proc move*[T](x: var T): T {.magic: "Move", noSideEffect.} = result = x wasMoved(x) -func copy*[T](x: T): T {.inline.} = - ## make explicit copy of the argument `x`, used to signal to the compiler - ## the copy is intentional - result = x - type range*[T]{.magic: "Range".} ## Generic type to construct range types. array*[I, T]{.magic: "Array".} ## Generic type to construct diff --git a/tests/arc/tcopytosink_warning.nim b/tests/arc/tcopytosink_warning.nim deleted file mode 100644 index 8ae36386a..000000000 --- a/tests/arc/tcopytosink_warning.nim +++ /dev/null @@ -1,22 +0,0 @@ -discard """ - cmd: "nim c --gc:arc $file" - nimout: '''tcopytosink_warning.nim(17, 7) Hint: myhint [User] -tcopytosink_warning.nim(19, 9) Hint: passing 'x' to a sink parameter introduces an implicit copy; if possible, rearrange your program's control flow to prevent it or use 'copy(x)' to hint the compiler it is intentional [Performance] -''' - output: "x" -""" -import macros - -proc test(v: var seq[string], x: sink string) = - v.add x - -var v = @["a", "b", "c"] -var x = "x" - -static: - hint("myhint") -test(v, copy(x)) # no warning -test(v, x) # produces warning - -echo x # use after sink - |