[Issue 1563] New: dynamic cast is not always performed
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Oct 9 19:18:30 PDT 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1563
Summary: dynamic cast is not always performed
Product: D
Version: 1.022
Platform: PC
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: davidl at 126.com
class A{}
class B:A{}
class C:B{}
void main()
{
A a = new B;
C c = cast(C)cast(void*)a;
c = cast(C)c;
assert(c is null); // assertion failure
c = cast(C)cast(A)cast(void*)c; // workaround
assert(c is null);
}
the problem here is we don't distinguish the dynamic cast with the none dynamic
one.
For dynamic cast, it should always perform the check. And people should use
non-dynamic cast whenever it's possible. Only use dynamic cast only when we're
well informed it *requiring* a dynamic cast.
A warning is appreciated on this if the compiler is going to optimize the
dynamic cast away. And a corresponding option for this warning would be nice.
something like : -WCastToItself
--
More information about the Digitalmars-d-bugs
mailing list