blob: 37bdac1d63f459c163db647e0cfed67bbf0f8f8a [file] [log] [blame]
// { dg-do compile }
// { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
struct BaseA {
virtual int fun(int n) [[ pre: n > 0 ]] { return -n; }
};
struct BaseB {
virtual int fun(int n) [[ pre: n < 0 ]] { return -n; }
};
struct Child1 : public BaseA, BaseB {
int fun(int n) [[ pre: n > 0 ]] { return -n; } // { dg-error "mismatched" }
};
struct Child2 : public BaseA, BaseB {
int fun(int n) [[ pre: n < 0 ]] { return -n; } // { dg-error "mismatched" }
};
struct Child3 : public BaseA, BaseB {
int fun(int n) { return -n; }
};
struct Child4 : public BaseA {
int fun(int n);
};
int Child4::fun(int n)
[[ pre: n != 0 ]] // { dg-error "mismatched" }
{
return -n;
}