[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