Fix classes not being added into Java method's throws clause when %catches is used
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11584 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
4516c1d3f3
commit
c7b7078dd0
5 changed files with 22 additions and 3 deletions
|
|
@ -1,6 +1,10 @@
|
|||
Version 1.3.40 (in progress)
|
||||
============================
|
||||
|
||||
2009-08-16: wsfulton
|
||||
[Java] When %catches is used, fix so that any classes specified in the "throws"
|
||||
attribute of the "throws" typemap are generated into the Java method's throws clause.
|
||||
|
||||
2009-08-16: wsfulton
|
||||
[C#] Fix exception handling when %catches is used, reported by Juan Manuel Alvarez.
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,16 @@ public class java_throws_runme {
|
|||
if (!pass)
|
||||
throw new RuntimeException("Test 2 failed");
|
||||
|
||||
// Check the exception class in the throw typemap
|
||||
pass = false;
|
||||
try {
|
||||
java_throws.catches_function(100);
|
||||
}
|
||||
catch (IllegalAccessException e) { pass = true; }
|
||||
|
||||
if (!pass)
|
||||
throw new RuntimeException("Test 3 failed");
|
||||
|
||||
// Check newfree typemap throws attribute
|
||||
try {
|
||||
TestClass tc = java_throws.makeTestClass();
|
||||
|
|
|
|||
|
|
@ -42,12 +42,16 @@ short full_of_exceptions(int num) {
|
|||
#if defined(_MSC_VER)
|
||||
#pragma warning(disable: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
|
||||
#endif
|
||||
void throw_spec_function(int value) throw (int) { throw (int)0; }
|
||||
bool throw_spec_function(int value) throw (int) { throw (int)0; }
|
||||
#if defined(_MSC_VER)
|
||||
#pragma warning(default: 4290) // C++ exception specification ignored except to indicate a function is not __declspec(nothrow)
|
||||
#endif
|
||||
%}
|
||||
|
||||
%catches(int) catches_function(int value);
|
||||
%inline %{
|
||||
bool catches_function(int value) { throw (int)0; }
|
||||
%}
|
||||
|
||||
// Check newfree typemap throws attribute
|
||||
%newobject makeTestClass;
|
||||
|
|
|
|||
|
|
@ -980,7 +980,7 @@ public:
|
|||
|
||||
// Get any Java exception classes in the throws typemap
|
||||
ParmList *throw_parm_list = NULL;
|
||||
if ((throw_parm_list = Getattr(n, "throws"))) {
|
||||
if ((throw_parm_list = Getattr(n, "catchlist"))) {
|
||||
Swig_typemap_attach_parms("throws", throw_parm_list, f);
|
||||
for (p = throw_parm_list; p; p = nextSibling(p)) {
|
||||
if ((tm = Getattr(p, "tmap:throws"))) {
|
||||
|
|
@ -3679,6 +3679,7 @@ public:
|
|||
Printf(declaration, " virtual %s", target);
|
||||
Delete(target);
|
||||
|
||||
// Add any exception specifications to the methods in the director class
|
||||
// Get any Java exception classes in the throws typemap
|
||||
ParmList *throw_parm_list = NULL;
|
||||
|
||||
|
|
|
|||
|
|
@ -1404,7 +1404,7 @@ MODULA3():
|
|||
|
||||
// Get any Modula 3 exception classes in the throws typemap
|
||||
ParmList *throw_parm_list = NULL;
|
||||
if ((throw_parm_list = Getattr(n, "throws"))) {
|
||||
if ((throw_parm_list = Getattr(n, "catchlist"))) {
|
||||
Swig_typemap_attach_parms("throws", throw_parm_list, f);
|
||||
Parm *p;
|
||||
for (p = throw_parm_list; p; p = nextSibling(p)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue