[Issue 1692] New: Abstract class dynamic creation bug
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Nov 24 09:38:40 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1692
Summary: Abstract class dynamic creation bug
Product: D
Version: 1.023
Platform: PC
OS/Version: Windows
Status: NEW
Severity: major
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: jaroslav.kroft at seznam.cz
Hi,
here is some piece of code which most probably doesn't work one expect to.
version (Tango) {
import tango.io.Console;
pragma(lib, "tango-user-dmd");
} else {
import std.stdio;
}
class AbstractError: Error {
this (char[] msg = null) {
super(msg);
}
}
abstract class Dummy {
public {
this() {
if (!this) {
throw new AbstractError();
}
}
}
char[] Value();
}
int main(char[][] args)
{
ClassInfo ci = ClassInfo.find("hello.Dummy");
if (ci) {
Object o = ci.create();
if (o) {
version (Tango) {
Cout(o.toUtf8);
} else {
writef(o.toString);
}
}
}
return 0;
}
This code would compile without any error, but when you try to run, you will
receive AV most probably directly in the constructor. I guess that in this case
the call of ClassInfo.create should either return null or throw some kind of
error....
--
More information about the Digitalmars-d-bugs
mailing list