digitalmars.D.bugs - [Issue 499] New: Multiple overrides of the destructor when using signals
- d-bugmail puremagic.com (43/43) Nov 13 2006 http://d.puremagic.com/issues/show_bug.cgi?id=499
- Bill Baxter (4/60) Nov 13 2006 This is already fixed in the version of std.signals here:
- Max Samuha (36/96) Nov 13 2006 It's not. The problem is not with signals but with mixed in
- Bill Baxter (3/114) Nov 13 2006 Ah, I see. Try moving your destrutor before the mixins.
- Max Samuha (3/5) Nov 14 2006 It works, thanks. But the bug should be fixed anyway
- d-bugmail puremagic.com (9/9) Nov 17 2006 http://d.puremagic.com/issues/show_bug.cgi?id=499
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 digitalmars.com ReportedBy: maxter 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. --
Nov 13 2006
d-bugmail 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 digitalmars.com ReportedBy: maxter 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
Nov 13 2006
On Tue, 14 Nov 2006 02:05:36 +0900, Bill Baxter <wbaxter gmail.com> wrote:d-bugmail puremagic.com wrote: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 dtorhttp://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 digitalmars.com ReportedBy: maxter 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
Nov 13 2006
Max Samuha wrote:On Tue, 14 Nov 2006 02:05:36 +0900, Bill Baxter <wbaxter gmail.com> wrote:Ah, I see. Try moving your destrutor before the mixins. --bbd-bugmail puremagic.com wrote: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 dtorhttp://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 digitalmars.com ReportedBy: maxter 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
Nov 13 2006
On Tue, 14 Nov 2006 04:54:04 +0900, Bill Baxter <wbaxter gmail.com> wrote:Ah, I see. Try moving your destrutor before the mixins. --bbIt works, thanks. But the bug should be fixed anyway
Nov 14 2006
http://d.puremagic.com/issues/show_bug.cgi?id=499 bugzilla digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED Fixed DMD 0.174 --
Nov 17 2006