digitalmars.D.bugs - [Issue 1908] New: Various closure problems
- d-bugmail puremagic.com (41/41) Mar 11 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (6/6) Mar 11 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (6/6) Mar 11 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (6/6) Mar 11 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (6/6) Mar 11 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (7/7) Mar 11 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (6/6) Apr 24 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 - d-bugmail puremagic.com (14/14) Oct 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=1908
 
http://d.puremagic.com/issues/show_bug.cgi?id=1908
           Summary: Various closure problems
           Product: D
           Version: 2.012
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: wrong-code
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: dvdfrdmn users.sf.net
Attached closure-related test cases fail.
closure5w.d: Segfaults. Only f() creates a closure and 'dg = & i' does not get
a
valid reference to it.
closure8w.d: Fails with ArrayBoundsError.
closure11w.d: Assert fails.  The tests in Function::needsClosure only
check f->isVirtual(), but a virtual function can call a non-virtual
function which does non-local access.  I fixed this in GDC by
testing f->isThis() instead.
closure13w.d: Assert fails. DotVarExp::semantic does not call
checkNestedReference for the 'this' of an outer function.
I fixed this in GDC by adding a semantic() call:
        // Skip over nested functions, and get the enclosing
        // class type.
        Dsymbol *s = tcd->toParent();
        while (s && s->isFuncDeclaration())
        {   FuncDeclaration *f = s->isFuncDeclaration();
            if (f->vthis)
            {
                e1 = new VarExp(loc, f->vthis);
            }
            s = s->toParent();
        }
        if (s && s->isClassDeclaration())
            e1->type = s->isClassDeclaration()->type;
 +      e1 = e1->semantic(sc); // Added to get corrected nested refs
        goto L1;
-- 
 Mar 11 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908 Created an attachment (id=234) --> (http://d.puremagic.com/issues/attachment.cgi?id=234&action=view) Test case closure5w --
 Mar 11 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908 Created an attachment (id=235) --> (http://d.puremagic.com/issues/attachment.cgi?id=235&action=view) Test case closure8w --
 Mar 11 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908 Created an attachment (id=236) --> (http://d.puremagic.com/issues/attachment.cgi?id=236&action=view) Test case closure11w --
 Mar 11 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908 Created an attachment (id=237) --> (http://d.puremagic.com/issues/attachment.cgi?id=237&action=view) Test case closure13w --
 Mar 11 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908 Created an attachment (id=238) --> (http://d.puremagic.com/issues/attachment.cgi?id=238&action=view) Test case closure14 Similar to closure13w, but causes an ICE. Also affects DMD 1.x. --
 Mar 11 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908 Patches for 11w and 13w were folded in to DMD 2.013. 13w was folded in to DMD 1.029, fixing 14. 5w and 8w are left. --
 Apr 24 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1908
Don <clugdbug yahoo.com.au> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |clugdbug yahoo.com.au
         Resolution|                            |FIXED
Test case 8w is a duplicate of bug 3326, and isn't actually a closure bug. 
Test case 5w is a duplicate of bug 1841. I'm therefore closing this bug, as the
other cases have been fixed.
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 Oct 19 2010








 
 
 
 d-bugmail puremagic.com 