dmd/compiler/test/fail_compilation/ice23569.d
Teodor Dutu 276ef2145b
Translate _d_newclass to a template (#14837)
This makes the following changes:
- Add template `_d_newclassT` to `druntime.src.core.lifetime.d`
- Replace lowering of `new C()` to `_d_newclassT!C()`
- Add `lowering` member to `NewExp`. This field stores the above
lowering to be used by e2ir.d
- Keep the old `_d_newclass` hook because it's used by
`TypeInfo_Class.create()`
- Add dummy `_d_newclassT` hook to tests that redefine the `object`
module
- Remove `new MinHeap!(TestType)()` from `fail308.d`. Otherwise the
errror was changed and printed the local path to druntime
- Move `err` to global scope in rt.sections.d to avoid the frontend
lowering
- Account for the `GC.malloc()` called by the template hook in the
`-profile=gc` tests

Signed-off-by: Teodor Dutu <teodor.dutu@gmail.com>

Signed-off-by: Teodor Dutu <teodor.dutu@gmail.com>
2023-01-27 10:02:10 +02:00

25 lines
399 B
D

// https://issues.dlang.org/show_bug.cgi?id=23569
/*
TEST_OUTPUT:
---
fail_compilation/ice23569.d(24): Error: cannot compare classes for equality because `object.Object` was not declared
---
*/
module object;
T _d_newclassT(T)()
if (is(T == class))
{
return null;
}
@safe unittest1()
{
class F
{
this(int )
{
}
}
auto ice23569 = new F(0) == new F(0);
}