Files
Nim/tests/proc/t23874.nim
Ryan McConnell 7b50d05d6b fixes #23869; sink generic typeclass (#23874)
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
2024-07-22 07:13:43 +02:00

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.}