public inbox for libstdc++-cvs@sourceware.org help / color / mirror / Atom feed
From: Jason Merrill <jason@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc/devel/c++-contracts] c++: move contract_violation to std::experimental Date: Tue, 1 Nov 2022 11:43:11 +0000 (GMT) [thread overview] Message-ID: <20221101114311.0F7F23857824@sourceware.org> (raw) https://gcc.gnu.org/g:a7a4a4ea950bed8f375f6fef8117a41cb238a1a2 commit a7a4a4ea950bed8f375f6fef8117a41cb238a1a2 Author: Jason Merrill <jason@redhat.com> Date: Tue Oct 25 16:52:34 2022 -0400 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: --- gcc/testsuite/g++.dg/contracts/contracts14.C | 2 +- gcc/testsuite/g++.dg/contracts/contracts15.C | 2 +- gcc/testsuite/g++.dg/contracts/contracts16.C | 2 +- gcc/testsuite/g++.dg/contracts/contracts17.C | 2 +- gcc/testsuite/g++.dg/modules/contracts-1_a.C | 4 ++-- gcc/testsuite/g++.dg/modules/contracts-2_a.C | 4 ++-- gcc/testsuite/g++.dg/modules/contracts-3_a.C | 4 ++-- gcc/testsuite/g++.dg/modules/contracts-4_a.C | 4 ++-- libstdc++-v3/src/experimental/contract.cc | 8 ++++---- libstdc++-v3/include/experimental/contract | 10 +++++++--- 10 files changed, 23 insertions(+), 19 deletions(-) diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C index cca1e79964f..4e81155ba11 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 fefafdfa66e..af3e539e1ce 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 d80cda46501..1c7054507f2 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts16.C +++ b/gcc/testsuite/g++.dg/contracts/contracts16.C @@ -5,7 +5,7 @@ #include <iostream> #include <experimental/contract> -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 099e0b2d03e..d165bb05315 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts17.C +++ b/gcc/testsuite/g++.dg/contracts/contracts17.C @@ -6,7 +6,7 @@ #include <iostream> #include <experimental/contract> -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 17bd5603e0c..f991ef8644e 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 <cstdio> -#include <contract> +#include <experimental/contract> 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 59b7a8194df..828d680d2a0 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 <cstdio> -#include <contract> +#include <experimental/contract> 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 24e709768ae..a4f03d35842 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 <cstdio> -#include <contract> +#include <experimental/contract> 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 0fe6f02cb94..f269e6c2078 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 <cstdio> -#include <contract> +#include <experimental/contract> 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/src/experimental/contract.cc b/libstdc++-v3/src/experimental/contract.cc index 8c649b5aafd..ddb1df47cb5 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 <cstdlib> __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, diff --git a/libstdc++-v3/include/experimental/contract b/libstdc++-v3/include/experimental/contract index 7a5f743665b..dc58a38a343 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
reply other threads:[~2022-11-01 11:43 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20221101114311.0F7F23857824@sourceware.org \ --to=jason@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ --cc=libstdc++-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).