[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Ileana Dumitrescu |
Date: |
Mon, 20 May 2024 13:06:47 -0400 (EDT) |
branch: development
commit 17fb010919e9f7e28fe28e13f2710bb85b00cb3a
Author: Bruno Haible <bruno@clisp.org>
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;