digitalmars.D.bugs - [Issue 7337] New: subclasses without invariants don't check basisclass invariant after method
- d-bugmail puremagic.com (90/90) Jan 21 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7337
- d-bugmail puremagic.com (15/15) Jan 29 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7337
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 puremagic.com ReportedBy: devbai mnet-mail.de --- Comment #0 from Devbai <devbai 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: -------
Jan 21 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7337 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code CC| |yebblies gmail.com Platform|x86_64 |All OS/Version|Linux |All --- Comment #1 from yebblies <yebblies gmail.com> 2012-01-30 03:11:53 EST --- This is currently disabled in FuncDeclaration::addPostInvariant, and enabling it causes a lot of error bugs in druntime and phobos, presumably due to issue 5039. Once that bug is closed this will hopefully be a quick fix. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 29 2012