mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
49 lines
1.3 KiB
D
49 lines
1.3 KiB
D
/* REQUIRED_ARGS: -preview=dip1000
|
|
TEST_OUTPUT:
|
|
---
|
|
fail_compilation/test23145.d(117): Error: `scope` allocation of `c` with a non-`scope` constructor is not allowed in a `@safe` function
|
|
fail_compilation/test23145.d(111): is the location of the constructor
|
|
fail_compilation/test23145.d(124): Error: `scope` allocation of `c` with a non-`scope` constructor is not allowed in a `@safe` function
|
|
fail_compilation/test23145.d(111): is the location of the constructor
|
|
fail_compilation/test23145.d(125): Error: `@safe` function `test23145.bax` cannot call `@system` function `test23145.inferred`
|
|
fail_compilation/test23145.d(131): and `scope` allocation of `c` with a non-`scope` constructor makes it fail to infer `@safe`
|
|
fail_compilation/test23145.d(129): `test23145.inferred` is declared here
|
|
---
|
|
*/
|
|
|
|
// https://issues.dlang.org/show_bug.cgi?id=23145
|
|
|
|
#line 100
|
|
|
|
class D
|
|
{
|
|
C c;
|
|
}
|
|
|
|
class C
|
|
{
|
|
D d;
|
|
int x=3;
|
|
this(int i) scope @safe @nogc;
|
|
this(D d) @safe @nogc;
|
|
}
|
|
|
|
C foo(D d) @nogc @safe
|
|
{
|
|
scope e = new C(1); // ok
|
|
scope c = new C(d); // error
|
|
return c.d.c;
|
|
}
|
|
|
|
C bax(D d) @safe
|
|
{
|
|
scope e = new C(1); // ok
|
|
scope c = new C(d); // error
|
|
inferred(d);
|
|
return c.d.c;
|
|
}
|
|
|
|
auto inferred(D d)
|
|
{
|
|
scope c = new C(d); // infer system
|
|
}
|