%module exception_partial_info // This produced compilable code for Tcl, Python in 1.3.27, fails in 1.3.29 // throw is invalid in C++17 and later, only SWIG to use it #define TESTCASE_THROW1(T1) throw(T1) %{ #define TESTCASE_THROW1(T1) %} %{ class myException { public: virtual const char *name() = 0; }; class ex1 : public myException { public: virtual const char *name() { return "ex1"; } }; class ex2 : public myException { public: virtual const char *name() { return "ex2"; } }; %} #if !defined(SWIGUTL) #if !defined(SWIGCHICKEN) %inline %{ class Impl { public: void f1() TESTCASE_THROW1(myException) { ex1 e; throw e; } void f2() TESTCASE_THROW1(myException) { ex2 e; throw e; } }; %} #else #warning "Chicken needs fixing for partial exception information" #endif #else #warning "UTL needs fixing for partial exception information" #endif