From c43f718301bb1dbd8d2594159de7b6bb4debc1bf Mon Sep 17 00:00:00 2001 From: Araq Date: Wed, 29 Nov 2017 00:01:27 +0100 Subject: destructors: some improvements for bug #4214: object constructors are moved too --- tests/destructor/tmove_objconstr.nim | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/destructor/tmove_objconstr.nim (limited to 'tests') diff --git a/tests/destructor/tmove_objconstr.nim b/tests/destructor/tmove_objconstr.nim new file mode 100644 index 000000000..3e8a64435 --- /dev/null +++ b/tests/destructor/tmove_objconstr.nim @@ -0,0 +1,32 @@ + +discard """ +output: '''test created +test destroyed 0''' + cmd: '''nim c --newruntime $file''' +""" + +# bug #4214 +type + Data = object + data: string + rc: int + +proc `=destroy`(d: var Data) = + dec d.rc + echo d.data, " destroyed ", d.rc + +proc `=`(dst: var Data, src: Data) = + echo src.data, " copied" + dst.data = src.data & " (copy)" + dec dst.rc + inc dst.rc + +proc initData(s: string): Data = + result = Data(data: s, rc: 1) + echo s, " created" + +proc main = + var x = initData"test" + +when isMainModule: + main() -- cgit 1.4.1-2-gfad0