summary refs log tree commit diff stats
path: root/tests/destructor
diff options
context:
space:
mode:
authorcooldome <cdome@bk.ru>2020-01-17 11:44:06 +0000
committerGitHub <noreply@github.com>2020-01-17 11:44:06 +0000
commitf51613e262a18f6f56119d73f4c1431c8ebf6d3a (patch)
tree9b5894d7fdbb48972d5f4355deddd5dd972657d1 /tests/destructor
parent76269074014b672582bc630ff393a95e5e21dcec (diff)
downloadNim-f51613e262a18f6f56119d73f4c1431c8ebf6d3a.tar.gz
make sink operator optional (#13068)
* make sink operator optional

* bug fix, add changelog entry

* Trigger build

* fix one regression

* fix test

* Trigger build

* fix typos
Diffstat (limited to 'tests/destructor')
-rw-r--r--tests/destructor/smart_ptr.nim6
-rw-r--r--tests/destructor/tdestructor.nim10
2 files changed, 4 insertions, 12 deletions
diff --git a/tests/destructor/smart_ptr.nim b/tests/destructor/smart_ptr.nim
index 7c3141d22..5079dc9db 100644
--- a/tests/destructor/smart_ptr.nim
+++ b/tests/destructor/smart_ptr.nim
@@ -20,12 +20,6 @@ proc `=`*[T](dest: var SharedPtr[T], src: SharedPtr[T]) {.inline.} =
       discard atomicInc(src.val[].atomicCounter)
     dest.val = src.val
 
-proc `=sink`*[T](dest: var SharedPtr[T], src: SharedPtr[T]) {.inline.} =
-  if dest.val != src.val:
-    if dest.val != nil:
-      `=destroy`(dest)
-    dest.val = src.val
-
 proc newSharedPtr*[T](val: sink T): SharedPtr[T] =
   result.val = cast[type(result.val)](allocShared0(sizeof(result.val[])))
   result.val.atomicCounter = 1
diff --git a/tests/destructor/tdestructor.nim b/tests/destructor/tdestructor.nim
index 780a45288..5cfecea4e 100644
--- a/tests/destructor/tdestructor.nim
+++ b/tests/destructor/tdestructor.nim
@@ -20,14 +20,10 @@ mygeneric2 destroyed
 ----
 ----
 myobj destroyed
-myobj destroyed
-myobj destroyed
-myobj destroyed
 mygeneric1 destroyed
 ---
 myobj destroyed
 myobj destroyed
-myobj destroyed
 '''
 """
 
@@ -37,8 +33,10 @@ type
     p: pointer
 
 proc `=destroy`(o: var TMyObj) =
-  if o.p != nil: dealloc o.p
-  echo "myobj destroyed"
+  if o.p != nil: 
+    dealloc o.p
+    o.p = nil
+    echo "myobj destroyed"
 
 type
   TMyGeneric1[T] = object