// { 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; }