// ensure no errors are thrown when we have to insert a decl for the internal // unchecked function after leaving a (possibly nested) namespace // { dg-do compile } // { dg-options "-std=c++2a -fcontracts" } namespace ns0 { int f(int a) [[ pre: a > 0 ]]; } int ns0::f(int a) [[ pre: a > 0 ]] { return -a; } namespace ns0 { namespace ns1 { int f(int a) [[ pre: a > 0 ]]; } } int ns0::ns1::f(int a) [[ pre: a > 0 ]] { return -a; } namespace ns0 { namespace ns1 { int f2(int a) [[ pre: a > 0 ]]; namespace ns2 { int f(int a) [[ pre: a > 0 ]]; } } int ns1::f2(int a) [[ pre: a > 0 ]] { return -a; } } int ns0::ns1::ns2::f(int a) [[ pre: a > 0 ]] { return -a; } namespace ns0 { struct S { int f(int a) [[ pre: a > 0 ]]; }; namespace ns1 { struct S2 { int f(int a) [[ pre: a > 0 ]]; }; } } int ns0::S::f(int a) [[ pre: a > 0 ]] { return -a; } int ns0::ns1::S2::f(int a) [[ pre: a > 0 ]] { return -a; }