[Issue 7337] subclasses without invariants don't check basisclass invariant after method

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Tue Jul 29 14:50:20 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=7337

--- Comment #4 from Adrien Pensart <crunchengine at gmail.com> ---
I retried to fix this some month ago in days, but i'm not comfortable at all
with dmd internals and i didn't succeed...

it could take weeks for me to resolve this...

i started writing a testcase into runnable/testinvariant.d : 

/***************************************************/
// 7337
void test7337()
{
    class A
    {
        static uint invariantStatus;

        public void foo()
        in
        {
            assert(invariantStatus == 0);
        }
        out
        {
            assert(invariantStatus == 2);
        }
        body
        {
            printf("in A.foo : %d\n", invariantStatus);
            assert(invariantStatus == 1);
        }

        invariant()
        {
            printf("in A invariant\n");
            invariantStatus++;
        }
    }

    class B : A
    {
        override public void foo()
        {
            printf("in B.foo : %d\n", invariantStatus);
        }
    }

    A a = new A();
    a.foo();
    A.invariantStatus = 0;

    B b = new B();
    b.foo();
}

--


More information about the Digitalmars-d-bugs mailing list