[Issue 8031] New: If a class have some signals it's impossible for a derived class to have any signals
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri May 4 03:54:30 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8031
Summary: If a class have some signals it's impossible for a
derived class to have any signals
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: blocker
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: verylonglogin.reg at gmail.com
--- Comment #0 from Denis <verylonglogin.reg at gmail.com> 2012-05-04 14:55:44 MSD ---
`Signal` methods should never ever by virtual. We don't want user to override
connect/disconnect etc.
All `Signal` methods are virtual. As a result with current named mixin
templates behavior (they can add virtual methods):
---
import std.signals;
class A {
mixin Signal created;
}
class B : A {
mixin Signal moved; // Yes, it overrides `created` signal!
}
---
or even worse:
---
import std.signals;
class A {
mixin Signal s1;
mixin Signal s2;
}
class B : A {
mixin Signal s3; // Guess what A signal is overriden?
}
---
or even worse:
---
import std.signals;
class A {
mixin Signal s1;
}
class B : A {
// Guess what exectly is overriden?
// Spoiler: unhook is overriden!
mixin Signal!int s2;
}
---
Hello heisenbugs for every unlucky person who doesn't compile with `-w`!
That's why it's impossible to use `std.signals` in any GUI library for now.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list