https://issues.dlang.org/show_bug.cgi?id=7337
--- Comment #4 from Adrien Pensart <cruncheng...@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(); } --