diff --git a/tests/destructor/tuse_result_prevents_sinks.nim b/tests/destructor/tuse_result_prevents_sinks.nim new file mode 100644 index 0000000000..4c32eac916 --- /dev/null +++ b/tests/destructor/tuse_result_prevents_sinks.nim @@ -0,0 +1,31 @@ +discard """ + output: "" +""" + +# bug #9594 + +type + Foo = object + i: int + +proc `=`(self: var Foo; other: Foo) = + self.i = other.i + 1 + +proc `=sink`(self: var Foo; other: Foo) = + self.i = other.i + +proc `=destroy`(self: var Foo) = discard + +proc test(): Foo = + result = Foo() + let temp = result + doAssert temp.i > 0 + return result + +proc testB(): Foo = + result = Foo() + let temp = result + doAssert temp.i > 0 + +discard test() +discard testB()