Files
Nim/tests/destructor/tmove.nim
ringabout 0347536ff2 fixes #24319; move doesn't work well with (deref (var array)) (#24321)
fixes #24319

`byRefLoc` (`mapType`) requires the Loc `a` to have the right type.
Without `lfEnforceDeref`, it produces the wrong type for `deref (var
array)`, which may come from `mitems`.
2024-10-18 10:56:37 +08:00

32 lines
571 B
Nim

discard """
targets: "c cpp"
"""
block:
var called = 0
proc bar(a: var int): var int =
inc called
result = a
proc foo =
var a = 2
var s = move bar(a)
doAssert called == 1
doAssert s == 2
foo()
import std/deques
block: # bug #24319
var queue = initDeque[array[32, byte]]()
for i in 0 ..< 5:
let element: array[32, byte] = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1,
]
queue.addLast(element)
doAssert queue.popLast[^1] == byte(1)