mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 18:02:05 +00:00
Still have to look this over some. We'll see. I put sink in this branch simply because I saw `tyVar` there and for no other reason. In any case the problem appears to be coming from `liftParamType` as it removes the `sink` type from the formals. #23869
27 lines
507 B
Nim
27 lines
507 B
Nim
block:
|
|
type Head[T] = object
|
|
wasc: bool
|
|
|
|
proc `=destroy`[T](x: var Head[T]) =
|
|
discard
|
|
|
|
proc `=copy`[T](x: var Head[T], y: Head[T]) =
|
|
x.wasc = true
|
|
|
|
proc `=dup`[T](x: Head[T]): Head[T] =
|
|
result.wasc = true
|
|
|
|
proc update(h: var Head) =
|
|
discard
|
|
|
|
proc digest(h: sink Head) =
|
|
assert h.wasc
|
|
|
|
var h = Head[int](wasc: false)
|
|
h.digest() # sink h
|
|
h.update() # use after sink
|
|
|
|
block:
|
|
proc two(a: sink auto) =discard
|
|
assert typeof(two[int]) is proc(a: sink int) {.nimcall.}
|