blob: c55f82034994eb4a8b561103501acf3edb4b8f0c [file] [log] [blame]
// https://issues.dlang.org/show_bug.cgi?id=11294
string result;
extern(C) void rt_finalize(void *ptr, bool det=true);
void clear(T)(T obj) if (is(T == class))
{
rt_finalize(cast(void*)obj);
}
class A
{
~this() { result ~= "A"; }
string dummy = "0";
}
class B
{
A a;
string dummy = "0";
alias a this;
~this() { result ~= "B"; }
}
void test11294()
{
auto a = new A;
auto b = new B;
b.a = a;
result ~= b.dummy;
clear(b);
result ~= a.dummy;
result ~= "END";
clear(a);
assert(result == "0B0ENDA");
}
// https://issues.dlang.org/show_bug.cgi?id=13392
void foo(T)(T t)
{
void* p = cast(void*) t; //Callas alias this
}
class X {}
class Y
{
alias a this;
@property X a(){assert(0);} //Here
}
void test13392()
{
foo(B.init);
}
void main()
{
test11294();
test13392();
}