digitalmars.D.bugs - [Issue 1787] New: Compiler segfaults on circular references.
- d-bugmail puremagic.com (27/27) Jan 15 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1787
 - d-bugmail puremagic.com (10/10) Sep 09 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1787
 - d-bugmail puremagic.com (28/32) Apr 18 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1787
 - d-bugmail puremagic.com (10/10) May 15 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1787
 - d-bugmail puremagic.com (26/26) Aug 13 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1787
 - d-bugmail puremagic.com (11/11) Oct 13 2009 http://d.puremagic.com/issues/show_bug.cgi?id=1787
 
http://d.puremagic.com/issues/show_bug.cgi?id=1787
           Summary: Compiler segfaults on circular references.
           Product: D
           Version: 1.024
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: aziz.kerim gmail.com
// Code snippets which kill dmd.
struct A
{ const a = B.b; }
struct B
{ const b = A.a; }
struct C
{
  const x = C.x;
}
// Some examples which don't segfault. The compiler reports errors as it
should.
const x = x;
const a = b;
const b = a;
-- 
 Jan 15 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1787
smjg iname.com changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |smjg iname.com
           Keywords|                            |ice-on-invalid-code
Related to issue 713?
WFM 1.035 Windows.  Has it gone away, or is it platform parity?
-- 
 Sep 09 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1787
clugdbug yahoo.com.au changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
         OS/Version|Linux                       |All
 Related to issue 713?
 
 WFM 1.035 Windows.  Has it gone away, or is it platform parity?
 
The first example now works, but the second one segfaults:
struct C {
  const x = C.x;
}
Segfaults on DMD2.028 and 1.042 Windows.
I've patched it so that it displays:
bug.d(2): Error: variable bug.C.x cannot infer type
Patch against DMD2.028 in void VarDeclaration::semantic(Scope *sc).
Index: declaration.c
===================================================================
--- declaration.c       (revision 22)
+++ declaration.c       (working copy)
   -688,6 +688,7   
     if (!type)
     {  inuse++;
        type = init->inferType(sc);
+       if (!type) { error("cannot infer type"); return; } 
        inuse--;
        inferred = 1;
-- 
 Apr 18 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1787
Don <clugdbug yahoo.com.au> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug yahoo.com.au
Was fixed in DMD2.030, still segfaults in DMD1.045.
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 May 15 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1787
Don <clugdbug yahoo.com.au> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch
This patch isn't great, but since it's already got a proper fix in D2, it might
be OK.
Index: mtype.c
===================================================================
--- mtype.c    (revision 192)
+++ mtype.c    (working copy)
   -4313,6 +4313,11   
     s = s->toAlias();
     v = s->isVarDeclaration();
+    if (v && v->isConst() && !v->type) {
+        // BUG 1787. TODO: This isn't the best place for this error message,
but it prevents a segfault
+        error(e->loc, "Cannot infer type of %s", v->toChars());
+        return e; 
+    }
     if (v && v->isConst() && v->type->toBasetype()->ty != Tsarray)
     {    ExpInitializer *ei = v->getExpInitializer();
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 Aug 13 2009
http://d.puremagic.com/issues/show_bug.cgi?id=1787
Walter Bright <bugzilla digitalmars.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
13:50:16 PDT ---
Fixed dmd 1.049
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 Oct 13 2009








 
 
 
 d-bugmail puremagic.com 