/* TEST_OUTPUT: --- fail_compilation/fail329.d(28): Error: variable `fail329.A.foo.__ensure.result` cannot modify result `result` in contract --- */ //import core.stdc.stdio; /*******************************************/ class A { int x = 7; int foo(int i) in { //printf("A.foo.in %d\n", i); assert(i == 2); assert(x == 7); //printf("A.foo.in pass\n"); } out (result) { assert(result & 1); assert(x == 7); result++; } do { return i; } } class B : A { override int foo(int i) in { float f; //printf("B.foo.in %d\n", i); assert(i == 4); assert(x == 7); f = f + i; } out (result) { assert(result < 8); assert(x == 7); } do { return i - 1; } } void test1() { auto b = new B(); b.foo(2); b.foo(4); }