tuse_result_prevents_sinks.nim 461 B

123456789101112131415161718192021222324252627282930313233
  1. discard """
  2. output: ""
  3. target: "C"
  4. """
  5. # bug #9594
  6. type
  7. Foo = object
  8. i: int
  9. proc `=`(self: var Foo; other: Foo) =
  10. self.i = other.i + 1
  11. proc `=sink`(self: var Foo; other: Foo) =
  12. self.i = other.i
  13. proc `=destroy`(self: var Foo) = discard
  14. proc test(): Foo =
  15. result = Foo()
  16. let temp = result
  17. doAssert temp.i > 0
  18. return result
  19. proc testB(): Foo =
  20. result = Foo()
  21. let temp = result
  22. doAssert temp.i > 0
  23. discard test()
  24. discard testB()