www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 5145] New: override error with forward ref of superclass

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145

           Summary: override error with forward ref of superclass
           Product: D
           Version: D1
          Platform: x86
        OS/Version: Mac OS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: fawzi gmx.ch



The following code fails with
{{{
t.d(24): Error: variable t.B.sync.this override cannot be applied to variable
t.d(25): Error: function t.B.sync.__require override only applies to class
member functions
}}}
then class B is declared after class A 
{{{
module t;

interface I1{
    void bla();
}

interface I2
{
    I1 sync ();
}

class A : B
{
    final override I1 sync()
    in { assert( valid ); }
    body
    {
        return null;
    }
}

class B : I2
{
    override I1 sync()
    in { assert( valid ); }
    body
    {
        return null;
    }

    final bool valid()
    {
        return true;
    }
}
}}}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 31 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145


Fawzi Mohamed <fawzi gmx.ch> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |regression


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 31 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch, rejects-valid
                 CC|                            |clugdbug yahoo.com.au
            Version|D1                          |D1 & D2
            Summary|override error with forward |Regression(2.050, 1.065)
                   |ref of superclass           |override error with forward
                   |                            |ref of superclass
         OS/Version|Mac OS X                    |All



Applies to both D1 and D2.

This was caused by svn683, which fixed bug 3602 "ICE(tocsym.c) compiling a
class, if its super class has preconditions"

And the problem is that it's using the scope from the parent function, which
isn't quite right: some of the attributes should be dropped. I don't know if
anything other than STCoverride can cause problems.


func.c, FuncDeclaration::mergeFrequire, line 1688.

        FuncDeclaration *fdv = (FuncDeclaration *)foverrides.data[i];

        /* The semantic pass on the contracts of the overridden functions must
         * be completed before code generation occurs (bug 3602).
         */
        if (fdv->fdrequire && fdv->fdrequire->semanticRun != PASSsemantic3done)
        {
            assert(fdv->scope);
+            StorageClass oldstc = fdv->scope->stc;
+            fdv->scope->stc &= ~ STCoverride;
            fdv->semantic3(fdv->scope);
+            fdv->scope->stc = fdv->scope->stc;
        }

        sf = fdv->mergeFrequire(sf);
        if (fdv->fdrequire)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 01 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145




This seems very similar to bug 5110, which is more general. Need to check if
the patch for 5110 fixes this bug as well.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 01 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |baryluk smp.if.uj.edu.pl



*** Issue 5253 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: -------
Nov 22 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla digitalmars.com



12:58:27 PST ---

 This seems very similar to bug 5110, which is more general. Need to check if
 the patch for 5110 fixes this bug as well.
Nope, different problem. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 05 2010
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5145


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



16:31:14 PST ---
http://www.dsource.org/projects/dmd/changeset/782

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 05 2010