summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/injectdestructors.nim2
-rw-r--r--lib/system.nim5
-rw-r--r--tests/arc/tcopytosink_warning.nim22
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
-