Revert "Introduce explicit copy (#15330)" (#15346)

This reverts commit a3e9cc5234.
This commit is contained in:
Andreas Rumpf
2020-09-16 23:24:17 +02:00
committed by GitHub
parent d938c6411e
commit bc9967f05a
3 changed files with 1 additions and 28 deletions

View File

@@ -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))

View File

@@ -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

View File

@@ -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