| // { dg-do compile } |
| // { dg-options "-std=c++2a -fcontracts" } |
| |
| void gfn3(int n) [[ pre: n > 0 ]]; |
| |
| struct Outer { |
| struct Inner { |
| void fn(int n) [[ pre: n > 0 && bob > 1 ]]; |
| void fn2(int n) [[ pre: n > 0 && bob > 1 ]]; |
| }; |
| |
| void fn(int m) [[ pre: m > 1 ]]; |
| friend void Inner::fn(int n) [[ pre: n > 0 && bob > 1 ]]; // { dg-error "not declared" } |
| |
| friend void gfn(int p) [[ pre: p > 0 ]]; |
| friend void gfn(int q) [[ pre: q > 1 ]]; // { dg-error "'q' was not declared" } |
| |
| // This should be okay. |
| friend void gfn2(int q); |
| friend void gfn2(int p) [[ pre: p > 0 ]] { } |
| |
| static int bob; |
| }; |
| int Outer::bob{-1}; |