t23874.nim 507 B

123456789101112131415161718192021222324252627
  1. block:
  2. type Head[T] = object
  3. wasc: bool
  4. proc `=destroy`[T](x: var Head[T]) =
  5. discard
  6. proc `=copy`[T](x: var Head[T], y: Head[T]) =
  7. x.wasc = true
  8. proc `=dup`[T](x: Head[T]): Head[T] =
  9. result.wasc = true
  10. proc update(h: var Head) =
  11. discard
  12. proc digest(h: sink Head) =
  13. assert h.wasc
  14. var h = Head[int](wasc: false)
  15. h.digest() # sink h
  16. h.update() # use after sink
  17. block:
  18. proc two(a: sink auto) =discard
  19. assert typeof(two[int]) is proc(a: sink int) {.nimcall.}