dmd/compiler/test/runnable/test24498.d
Tim Schendekehl f1307d6c75
Fix bugzilla 24498 - Multidimensional array not scanned by GC (#16400)
For expression `new int[][][](2, 2)` the relevant element type is
`int[]` and not `int`, because only two dimensions are allocated.
2024-04-19 22:13:27 +02:00

21 lines
595 B
D

import core.memory;
void main()
{
{
int[][] a = new int[][](2, 2);
assert(!(GC.getAttr(a.ptr) & GC.BlkAttr.NO_SCAN));
assert(GC.getAttr(a[0].ptr) & GC.BlkAttr.NO_SCAN);
}
{
void*[][] a = new void*[][](2, 2);
assert(!(GC.getAttr(a.ptr) & GC.BlkAttr.NO_SCAN));
assert(!(GC.getAttr(a[0].ptr) & GC.BlkAttr.NO_SCAN));
}
{
int[][][] a = new int[][][](2, 2);
assert(!(GC.getAttr(a.ptr) & GC.BlkAttr.NO_SCAN));
assert(!(GC.getAttr(a[0].ptr) & GC.BlkAttr.NO_SCAN));
assert(a[0][0].ptr is null);
}
}