mirror of
https://github.com/nim-lang/Nim.git
synced 2026-05-05 05:24:49 +00:00
fixes #24626
`createTypeboundOps` in sempass2 is called when generating destructors
for types including for explicit destructor calls, however it blocks
destructors from getting generated in a `nodestroy` proc. This causes
issues when a destructor is explicitly called in a `nodestroy` proc. To
fix this, allow destructors to get generated only for explicit
destructor calls in nodestroy procs.
(cherry picked from commit 793baf34ff)
21 lines
434 B
Nim
21 lines
434 B
Nim
# issue #24626
|
|
|
|
proc arrayWith2[T](y: T, size: static int): array[size, T] {.noinit, nodestroy, raises: [].} =
|
|
## Creates a new array filled with `y`.
|
|
for i in 0..size-1:
|
|
when defined(nimHasDup):
|
|
result[i] = `=dup`(y)
|
|
else:
|
|
wasMoved(result[i])
|
|
`=copy`(result[i], y)
|
|
|
|
proc useArray(x: seq[int]) =
|
|
var a = arrayWith2(x, 2)
|
|
|
|
proc main =
|
|
let x = newSeq[int](100)
|
|
for i in 0..5:
|
|
useArray(x)
|
|
|
|
main()
|