[gcc/devel/c++-contracts] c++: move contract_violation to std::experimental

Jason Merrill jason@gcc.gnu.org
Tue Nov 1 11:43:11 GMT 2022


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


More information about the Libstdc++-cvs mailing list