diff options
Diffstat (limited to 'Examples/test-suite/threads_exception.i')
-rw-r--r-- | Examples/test-suite/threads_exception.i | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/Examples/test-suite/threads_exception.i b/Examples/test-suite/threads_exception.i index caa79c78e..4708633db 100644 --- a/Examples/test-suite/threads_exception.i +++ b/Examples/test-suite/threads_exception.i @@ -4,6 +4,14 @@ %module(threads="1") threads_exception +// throw is invalid in C++17 and later, only SWIG to use it +#define TESTCASE_THROW1(T1) throw(T1) +#define TESTCASE_THROW3(T1, T2, T3) throw(T1, T2, T3) +%{ +#define TESTCASE_THROW1(T1) +#define TESTCASE_THROW3(T1, T2, T3) +%} + %{ struct A {}; %} @@ -11,10 +19,6 @@ struct A {}; %inline %{ #include <string> -#if defined(_MSC_VER) - #pragma warning(disable: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow) -#endif - class Exc { public: Exc(int c, const char *m) { @@ -28,24 +32,24 @@ public: class Test { public: - int simple() throw(int) { + int simple() TESTCASE_THROW1(int) { throw(37); return 1; } - int message() throw(const char *) { + int message() TESTCASE_THROW1(const char *) { throw("I died."); return 1; } - int hosed() throw(Exc) { + int hosed() TESTCASE_THROW1(Exc) { throw(Exc(42,"Hosed")); return 1; } - int unknown() throw(A*) { + int unknown() TESTCASE_THROW1(A*) { static A a; throw &a; return 1; } - int multi(int x) throw(int, const char *, Exc) { + int multi(int x) TESTCASE_THROW3(int, const char *, Exc) { if (x == 1) throw(37); if (x == 2) throw("Bleah!"); if (x == 3) throw(Exc(42,"No-go-diggy-die")); |