http://d.puremagic.com/issues/show_bug.cgi?id=7337

           Summary: subclasses without invariants don't check basisclass
                    invariant after method
           Product: D
           Version: D2
          Platform: x86_64
        OS/Version: Linux
            Status: NEW
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: dev...@mnet-mail.de


--- Comment #0 from Devbai <dev...@mnet-mail.de> 2012-01-21 10:19:51 PST ---
Hello,

Subclasses without own invariants don't check basisclass invariant
after method.

example:


the programm ..
**************
import std.stdio;

/** Basisclass with own invariants */
class ClassA 
{
  private int mValue=0;

  invariant()
  { writeln("checking INVARIANT ClassA");
    assert ( mValue>=0 );              
  }

  public void doSomthing()
  { writeln("ClassA.doSomthing() - BODY");
  }   
}


/** Subclass with own invariants */
class ClassB : ClassA
{
  invariant()
  { writeln("checking INVARIANT ClassB");
  }

  override
  public void doSomthing()
  { writeln("ClassB.doSomthing() - BODY");
  }   
}

/** Subclass without own invariants */
class ClassC : ClassA
{
  override
  public void doSomthing()
  { writeln("ClassC.doSomthing() - BODY");
  }   
}




public static void main ()
{
  writeln("***  START  ***");

  writeln("\nClassA:");
  ClassA aObject = new ClassA();
  aObject.doSomthing();

  writeln("\nClassB:");
  ClassB bObject = new ClassB();
  bObject.doSomthing();

  writeln("\nClassC:");
  ClassC cObject = new ClassC();
  cObject.doSomthing();

  writeln("\n***  END  ***");
}
**************

compiled with DMD64 D Compiler v2.057


will output:
**************
***  START  ***

ClassA:
checking INVARIANT ClassA
ClassA.doSomthing() - BODY
checking INVARIANT ClassA

ClassB:
checking INVARIANT ClassB
checking INVARIANT ClassA
ClassB.doSomthing() - BODY
checking INVARIANT ClassB
checking INVARIANT ClassA

ClassC:
checking INVARIANT ClassA
ClassC.doSomthing() - BODY

***  END  ***
**************

as seen classC-method doSomething() dont check invariant after methode-call.

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

Reply via email to