www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1692] New: Abstract class dynamic creation bug

reply d-bugmail puremagic.com writes:
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
next sibling parent d-bugmail puremagic.com writes:
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
prev sibling next sibling parent d-bugmail puremagic.com writes:
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
prev sibling next sibling parent d-bugmail puremagic.com writes:
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
prev sibling next sibling parent d-bugmail puremagic.com writes:
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
prev sibling parent d-bugmail puremagic.com writes:
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