[Issue 499] New: Multiple overrides of the destructor when using signals
Max Samuha
maxter at i.com.ua
Mon Nov 13 11:19:07 PST 2006
On Tue, 14 Nov 2006 02:05:36 +0900, Bill Baxter <wbaxter at gmail.com>
wrote:
>d-bugmail at puremagic.com wrote:
>> http://d.puremagic.com/issues/show_bug.cgi?id=499
>>
>> Summary: Multiple overrides of the destructor when using signals
>> Product: D
>> Version: 0.173
>> Platform: PC
>> OS/Version: Windows
>> Status: NEW
>> Severity: blocker
>> Priority: P2
>> Component: DMD
>> AssignedTo: bugzilla at digitalmars.com
>> ReportedBy: maxter at i.com.ua
>>
>>
>> The following gives 'test.d(233): function test.Test.Signal!(Args)._dtor
>> multiple overrides of same function':
>>
>> import std.stdio, std.signals;
>>
>> class Args
>> {
>> int foo;
>> }
>>
>> class Base
>> {
>> ~this()
>> {
>> writefln("Base dtor!");
>> }
>> }
>>
>> class Test : Base
>> {
>> mixin Signal!(Args) A;
>> mixin Signal!(Args) B;
>>
>> ~this()
>> {
>> writefln("Test dtor");
>> }
>> }
>>
>>
>> void main()
>> {
>> auto test = new Test;
>> }
>>
>> //------------------------------
>>
>> The code compiles ok, if there is no base class or no destructor in the base
>> class.
>>
>>
>
>This is already fixed in the version of std.signals here:
>http://www.digitalmars.com/d/phobos/signals.d
>
>--bb
It's not. The problem is not with signals but with mixed in
destructors
template TDtor()
{
~this()
{
writefln("Mixed-in dtor");
}
}
class Base
{
~this()
{
writefln("Base dtor");
}
}
class Test : Base
{
mixin TDtor A;
mixin TDtor B;
~this()
{
writefln("Test dtor");
}
}
void main()
{
auto test = new Test;
}
If i get it right, this should compile and output:
Test dtor
Mixed-in dtor
Mixed-in dtor
Base dtor
More information about the Digitalmars-d-bugs
mailing list