dmd/compiler/test/compilable/ob2.d
2022-07-09 18:53:07 +02:00

44 lines
677 B
D

// REQUIRED_ARGS: -preview=dip1021
void* malloc();
@live T* foo1(T)(T* p)
{
return p; // consumes owner
}
@live T* foo2(T)()
{
T* p = null;
return p; // consumes owner
}
@live T* foo3(T)(T* p)
{
scope T* q = p; // borrows from p
return p; // use of p ends borrow in q
}
@live T* foo4(T)(T* p)
{
scope T* bq = p; // borrow
scope const T* cq = p; // const borrow
return p; // ends both borrows
}
@live T* foo5(T)()
{
auto p = cast(T*) malloc();
scope b = p;
return p;
}
void test()
{
int* p;
foo1!int(p);
foo2!int();
foo3!int(p);
foo4!int(p);
foo5!int();
}