From: Jason Merrill Date: Tue, 25 Oct 2022 20:52:34 +0000 (-0400) Subject: c++: move contract_violation to std::experimental X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7a4a4ea950bed8f375f6fef8117a41cb238a1a2;p=thirdparty%2Fgcc.git c++: move contract_violation to std::experimental libstdc++-v3/ChangeLog: * include/experimental/contract: Move into std::experimental * src/experimental/contract.cc: Adjust. gcc/testsuite/ChangeLog: * g++.dg/contracts/contracts14.C * g++.dg/contracts/contracts15.C * g++.dg/contracts/contracts16.C * g++.dg/contracts/contracts17.C: contract_violation is now in std::experimental. --- diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C index cca1e79964ff..4e81155ba11d 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts14.C +++ b/gcc/testsuite/g++.dg/contracts/contracts14.C @@ -15,7 +15,7 @@ __on_contract_violation (bool continue_, const char * assertion_role, int continuation_mode); -void handle_contract_violation(const std::contract_violation &violation) { +void handle_contract_violation(const std::experimental::contract_violation &violation) { std::cerr << "custom std::handle_contract_violation called:" << " " << violation.line_number() << " " << violation.file_name() diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C index fefafdfa66e2..af3e539e1cec 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts15.C +++ b/gcc/testsuite/g++.dg/contracts/contracts15.C @@ -15,7 +15,7 @@ __on_contract_violation (bool continue_, const char * assertion_role, int continuation_mode); -void handle_contract_violation(const std::contract_violation &violation) { +void handle_contract_violation(const std::experimental::contract_violation &violation) { std::cerr << "custom std::handle_contract_violation called:" << " " << violation.line_number() << " " << violation.file_name() diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C index d80cda46501d..1c7054507f2a 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts16.C +++ b/gcc/testsuite/g++.dg/contracts/contracts16.C @@ -5,7 +5,7 @@ #include #include -void handle_contract_violation(const std::contract_violation &violation) { +void handle_contract_violation(const std::experimental::contract_violation &violation) { std::cerr << "custom std::handle_contract_violation called:" << " " << violation.line_number() << " " << violation.file_name() diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C index 099e0b2d03eb..d165bb053151 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts17.C +++ b/gcc/testsuite/g++.dg/contracts/contracts17.C @@ -6,7 +6,7 @@ #include #include -void handle_contract_violation(const std::contract_violation &violation) { +void handle_contract_violation(const std::experimental::contract_violation &violation) { std::cerr << "custom std::handle_contract_violation called:" << " " << violation.line_number() << " " << violation.file_name() diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C index 17bd5603e0c7..f991ef8644eb 100644 --- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C +++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C @@ -3,12 +3,12 @@ // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" } module; #include -#include +#include export module foo; // { dg-module-cmi foo } export int violation_count{0}; -extern "C++" export void handle_contract_violation(const std::contract_violation &violation) +extern "C++" export void handle_contract_violation(const std::experimental::contract_violation &violation) { violation_count++; printf("violation_count: %d\n", violation_count); diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C index 59b7a8194df3..828d680d2a09 100644 --- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C +++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C @@ -6,13 +6,13 @@ // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" } module; #include -#include +#include export module foo; // { dg-module-cmi foo } export int violation_count{0}; export int violation_line_sum{0}; -extern "C++" export void handle_contract_violation(const std::contract_violation &violation) +extern "C++" export void handle_contract_violation(const std::experimental::contract_violation &violation) { violation_count++; violation_line_sum += violation.line_number () * violation_count; diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C index 24e709768ae6..a4f03d358426 100644 --- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C +++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C @@ -3,12 +3,12 @@ // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" } module; #include -#include +#include export module foo; // { dg-module-cmi foo } export int violation_count{0}; -extern "C++" export void handle_contract_violation(const std::contract_violation &violation) +extern "C++" export void handle_contract_violation(const std::experimental::contract_violation &violation) { violation_count++; printf("violation_count: %d\n", violation_count); diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C index 0fe6f02cb941..f269e6c20782 100644 --- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C +++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C @@ -4,12 +4,12 @@ // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" } module; #include -#include +#include export module foo; // { dg-module-cmi foo } export int violation_count{0}; -extern "C++" export void handle_contract_violation(const std::contract_violation &violation) +extern "C++" export void handle_contract_violation(const std::experimental::contract_violation &violation) { violation_count++; printf("violation_count: %d\n", violation_count); diff --git a/libstdc++-v3/include/experimental/contract b/libstdc++-v3/include/experimental/contract index 7a5f743665b6..dc58a38a3435 100644 --- a/libstdc++-v3/include/experimental/contract +++ b/libstdc++-v3/include/experimental/contract @@ -45,6 +45,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace experimental +{ // From P1332 enum class contract_violation_continuation_mode { NEVER_CONTINUE, MAYBE_CONTINUE @@ -76,12 +78,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return _M_continue; } }; - //void handle_contract_violation (const contract_violation &); - - //int on_contract_violation (bool, int, const char *, const char *, const char *, const char *, const char *, int); +} // namespace experimental _GLIBCXX_END_NAMESPACE_VERSION } // namespace std + //void handle_contract_violation (const contract_violation &); + + //int on_contract_violation (bool, int, const char *, const char *, const char *, const char *, const char *, int); + #endif // C++17 #endif // _GLIBCXX_CONTRACT diff --git a/libstdc++-v3/src/experimental/contract.cc b/libstdc++-v3/src/experimental/contract.cc index 8c649b5aafd4..ddb1df47cb57 100644 --- a/libstdc++-v3/src/experimental/contract.cc +++ b/libstdc++-v3/src/experimental/contract.cc @@ -1,4 +1,4 @@ -// -*- C++ -*- std::contract_violation and friends +// -*- C++ -*- std::experimental::contract_violation and friends // Copyright (C) 1994-2018 Free Software Foundation, Inc. // // This file is part of GCC. @@ -27,7 +27,7 @@ #include __attribute__ ((weak)) void -handle_contract_violation (const std::contract_violation &violation) +handle_contract_violation (const std::experimental::contract_violation &violation) { std::cerr << "default std::handle_contract_violation called: " << std::endl << " " << violation.file_name() @@ -51,8 +51,8 @@ __on_contract_violation (bool continue_, const char *assertion_role, int continuation_mode) { - using cvmc = std::contract_violation_continuation_mode; - std::contract_violation violation (line_number, + using cvmc = std::experimental::contract_violation_continuation_mode; + std::experimental::contract_violation violation (line_number, file_name, function_name, comment,