blob: 95aaaf445a9ffbd000b1d2c6cb16d52bb8a85ec8 [file] [log] [blame]
/*
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);
}