(unknown)

Ileana Dumitrescu <[email protected]>
Newsgroups gmane.comp.gnu.libtool.cvs
Message-ID <[email protected]>
branch: development
commit 17fb010919e9f7e28fe28e13f2710bb85b00cb3a
Author: Bruno Haible <[email protected]>
AuthorDate: Tue May 14 13:51:39 2024 +0200

    Support C++17 compilers in the C++ tests.
    
    * tests/exceptions.at: For C++11 and newer, use the keyword 'noexcept'
    instead of the keyword 'throw'.
---
 tests/exceptions.at | 42 +++++++++++++++++++++++++++++-------------
 1 file changed, 29 insertions(+), 13 deletions(-)

diff --git a/tests/exceptions.at b/tests/exceptions.at
index 845ccff2..b18dd875 100644
--- a/tests/exceptions.at
+++ b/tests/exceptions.at
@@ -94,11 +94,19 @@ AT_DATA([common.h],
 # define COMMON_IMPEXP
 #endif
 
+#if __cplusplus >= 201103L
+# define ATTRIBUTE_THROW(type) noexcept (false)
+# define ATTRIBUTE_NOTHROW noexcept (true)
+#else
+# define ATTRIBUTE_THROW(type) throw (type)
+# define ATTRIBUTE_NOTHROW throw ()
+#endif
+
 class COMMON_IMPEXP modexc : public std::exception {
 public:
   modexc (std::string str) : message (str) { }
-  ~modexc () throw () { }
-  virtual const char *what () const throw ()
+  ~modexc () ATTRIBUTE_NOTHROW { }
+  virtual const char *what () const ATTRIBUTE_NOTHROW
   {
     return message.c_str ();
   }
@@ -138,7 +146,7 @@ AT_DATA([module.h],
 # define MODULE_IMPEXP
 #endif
 
-extern "C" int MODULE_IMPEXP modfoo () throw (modexc);
+extern "C" int MODULE_IMPEXP modfoo () ATTRIBUTE_THROW (modexc);
 ]])
 
 AT_DATA([module.cpp],
@@ -146,13 +154,13 @@ AT_DATA([module.cpp],
 #define LIBTOOL_TEST_IN_MODULE
 #include "module.h"
 
-int modbar (void) throw (modexc)
+int modbar (void) ATTRIBUTE_THROW (modexc)
 {
   throw modexc ("exception in module");
 }
 
 extern "C"
-int modfoo (void) throw (modexc)
+int modfoo (void) ATTRIBUTE_THROW (modexc)
 {
   try {
     modbar ();
@@ -184,18 +192,26 @@ AT_DATA([lib.h],
 # define LIB_IMPEXP
 #endif
 
+#if __cplusplus >= 201103L
+# define ATTRIBUTE_THROW(type) noexcept (false)
+# define ATTRIBUTE_NOTHROW noexcept (true)
+#else
+# define ATTRIBUTE_THROW(type) throw (type)
+# define ATTRIBUTE_NOTHROW throw ()
+#endif
+
 class LIB_IMPEXP libexc : public std::exception {
 public:
   libexc (std::string str) : message (str) { }
-  ~libexc () throw () { }
-  virtual const char *what () const throw ()
+  ~libexc () ATTRIBUTE_NOTHROW { }
+  virtual const char *what () const ATTRIBUTE_NOTHROW
   {
     return message.c_str ();
   }
 private:
   std::string message;
 };
-int LIB_IMPEXP libfoo () throw (libexc);
+int LIB_IMPEXP libfoo () ATTRIBUTE_THROW (libexc);
 ]])
 
 AT_DATA([lib.cpp],
@@ -203,12 +219,12 @@ AT_DATA([lib.cpp],
 #define LIBTOOL_TEST_IN_LIB
 #include "lib.h"
 
-int libbar (void) throw (libexc)
+int libbar (void) ATTRIBUTE_THROW (libexc)
 {
   throw libexc ("exception in library");
 }
 
-int libfoo (void) throw (libexc)
+int libfoo (void) ATTRIBUTE_THROW (libexc)
 {
   try {
     libbar ();
@@ -234,8 +250,8 @@ AT_DATA([main.cpp],
 class exc : public std::exception {
 public:
   exc (std::string str) : message (str) { }
-  ~exc () throw () { }
-  virtual const char *what () const throw ()
+  ~exc () ATTRIBUTE_NOTHROW { }
+  virtual const char *what () const ATTRIBUTE_NOTHROW
   {
     return message.c_str ();
   }
@@ -243,7 +259,7 @@ private:
   std::string message;
 };
 
-int foo (void) throw (exc)
+int foo (void) ATTRIBUTE_THROW (exc)
 {
   throw exc ("exception in program");
   return 0;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.