mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
73 lines
1.7 KiB
D
73 lines
1.7 KiB
D
// REQUIRED_ARGS: -vgc -o-
|
|
// PERMUTE_ARGS:
|
|
|
|
/***************** NewExp *******************/
|
|
|
|
struct S1 { }
|
|
struct S2 { this(int); }
|
|
struct S3 { this(int) @nogc; }
|
|
|
|
/*
|
|
TEST_OUTPUT:
|
|
---
|
|
compilable/vgc1.d(25): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(27): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(28): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(30): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(31): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(32): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(34): vgc: `new` causes a GC allocation
|
|
---
|
|
*/
|
|
|
|
void testNew()
|
|
{
|
|
int* p1 = new int;
|
|
|
|
int[] a1 = new int[3];
|
|
int[][] a2 = new int[][](2, 3);
|
|
|
|
S1* ps1 = new S1();
|
|
S2* ps2 = new S2(1);
|
|
S3* ps3 = new S3(1);
|
|
|
|
Object o1 = new Object();
|
|
}
|
|
|
|
/*
|
|
TEST_OUTPUT:
|
|
---
|
|
compilable/vgc1.d(51): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(53): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(54): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(56): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(57): vgc: `new` causes a GC allocation
|
|
compilable/vgc1.d(58): vgc: `new` causes a GC allocation
|
|
---
|
|
*/
|
|
|
|
void testNewScope()
|
|
{
|
|
scope int* p1 = new int;
|
|
|
|
scope int[] a1 = new int[3];
|
|
scope int[][] a2 = new int[][](2, 3);
|
|
|
|
scope S1* ps1 = new S1();
|
|
scope S2* ps2 = new S2(1);
|
|
scope S3* ps3 = new S3(1);
|
|
|
|
scope Object o1 = new Object(); // no error
|
|
scope o2 = new Object(); // no error
|
|
scope Object o3;
|
|
o3 = o2; // no error
|
|
}
|
|
|
|
/***************** DeleteExp *******************/
|
|
|
|
void testDelete(int* p, Object o, S1* s)
|
|
{
|
|
destroy(p);
|
|
destroy(o);
|
|
destroy(s);
|
|
}
|