t19457.nim 952 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. discard """
  2. matrix: "--mm:refc; --mm:arc"
  3. """
  4. # bug #19457
  5. proc gcd(x, y: seq[int]): seq[int] =
  6. var
  7. a = x
  8. b = y
  9. while b[0] > 0:
  10. let c = @[a[0] mod b[0]]
  11. a = b
  12. b = c
  13. return a
  14. doAssert gcd(@[1], @[2]) == @[1]
  15. import std/sequtils
  16. type IrrelevantType* = object
  17. proc `=copy`*(dest: var IrrelevantType, src: IrrelevantType) =
  18. discard
  19. type
  20. Inner* = object
  21. value*: string
  22. someField*: IrrelevantType
  23. Outer* = object
  24. inner*: Inner
  25. iterator valueIt(self: Outer): Inner =
  26. yield self.inner
  27. proc getValues*(self: var Outer): seq[Inner] =
  28. var peers = self.valueIt().toSeq
  29. return peers
  30. var outer = Outer()
  31. outer.inner = Inner(value: "hello, world")
  32. doAssert (outer.valueIt().toSeq)[0].value == "hello, world" # Passes
  33. doAssert outer.inner.value == "hello, world" # Passes too, original value is doing fine
  34. doAssert outer.getValues()[0].value == "hello, world" # Fails, value is empty