digitalmars.D.bugs - [Issue 1692] New: Abstract class dynamic creation bug
- d-bugmail puremagic.com (55/55) Nov 24 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1692
- d-bugmail puremagic.com (8/8) Nov 25 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1692
- d-bugmail puremagic.com (12/12) Apr 23 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1692
- d-bugmail puremagic.com (17/17) Jul 01 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1692
- d-bugmail puremagic.com (10/10) Sep 14 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1692
- d-bugmail puremagic.com (15/15) Oct 13 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1692
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 digitalmars.com
ReportedBy: jaroslav.kroft 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....
--
Nov 24 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1692
samukha voliacable.com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |samukha voliacable.com
*** Bug 2453 has been marked as a duplicate of this bug. ***
--
Nov 25 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1692
Added example from Bug 2453.
abstract class C {
}
void main()
{
auto c = cast(C)C.classinfo.create();
assert(c is null); // should pass or classinfo.create should throw an
exception
}
--
Apr 23 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1692
yebblies <yebblies gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
CC| |yebblies gmail.com
Component|DMD |druntime
Platform|x86 |All
OS/Version|Windows |All
The bug is primarily in druntime, but requires a dmd change to pass more
information along.
https://github.com/D-Programming-Language/dmd/pull/186
https://github.com/D-Programming-Language/druntime/pull/34
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 01 2011
http://d.puremagic.com/issues/show_bug.cgi?id=1692
yebblies <yebblies gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |opantm+spam gmail.com
*** Issue 6667 has been marked as a duplicate of this issue. ***
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 14 2011
http://d.puremagic.com/issues/show_bug.cgi?id=1692
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
23:25:02 PDT ---
https://github.com/D-Programming-Language/druntime/commit/b7270004a95c33372e5b15bc72069c001b064acf
https://github.com/D-Programming-Language/phobos/commit/23109c032d9f3117f154a8bb0f588ef9ada85565
https://github.com/D-Programming-Language/dmd/commit/0a9a27646954d73dd32e38175a6126fbba6bd334
https://github.com/D-Programming-Language/dmd/commit/90dfda907b4b634effc12bc7ea546ab6b3ffe1b0
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 13 2011









d-bugmail puremagic.com 