[Issue 7337] New: subclasses without invariants don't check	basisclass invariant after method
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Sat Jan 21 10:19:52 PST 2012
    
    
  
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: nobody at puremagic.com
        ReportedBy: devbai at mnet-mail.de
--- Comment #0 from Devbai <devbai at 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: -------
    
    
More information about the Digitalmars-d-bugs
mailing list