From ef4b755183f6564cc0f35cdf01794626c4e5fe2f Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Fri, 27 Jul 2018 18:20:13 +0200 Subject: allows a destructor to be attached to a tyString/tySequence --- lib/core/seqs.nim | 12 +++++++++--- lib/core/strs.nim | 17 +++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) (limited to 'lib/core') diff --git a/lib/core/seqs.nim b/lib/core/seqs.nim index 4327d2352..4dcf6cbbb 100644 --- a/lib/core/seqs.nim +++ b/lib/core/seqs.nim @@ -34,7 +34,8 @@ when false: proc `=trace`[T](s: NimSeqV2[T]) = for i in 0 ..< s.len: `=trace`(s.data[i]) -proc `=destroy`[T](x: var NimSeqV2[T]) = +proc `=destroy`[T](s: var seq[T]) = + var x = cast[ptr NimSeqV2[T]](addr s) var p = x.p if p != nil: when not supportsCopyMem(T): @@ -43,7 +44,10 @@ proc `=destroy`[T](x: var NimSeqV2[T]) = x.p = nil x.len = 0 -proc `=`[T](a: var NimSeqV2[T]; b: NimSeqV2[T]) = +proc `=`[T](x: var seq[T]; y: seq[T]) = + var a = cast[ptr NimSeqV2[T]](addr x) + var b = cast[ptr NimSeqV2[T]](unsafeAddr y) + if a.p == b.p: return `=destroy`(a) a.len = b.len @@ -56,7 +60,9 @@ proc `=`[T](a: var NimSeqV2[T]; b: NimSeqV2[T]) = for i in 0..