Fixes for director code with exception specifications on the destructor (director_exception.i testcase)
Had to remove hack for Scott Michel's broken compiler though Scott can you try another hack? git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6359 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
6880fb6b15
commit
45718da90f
1 changed files with 9 additions and 4 deletions
|
|
@ -3195,13 +3195,13 @@ class JAVA : public Language {
|
||||||
if ((tm = Swig_typemap_lookup_new("out",n,"",0)))
|
if ((tm = Swig_typemap_lookup_new("out",n,"",0)))
|
||||||
addThrows(n, "tmap:out", n);
|
addThrows(n, "tmap:out", n);
|
||||||
|
|
||||||
if ((throw_parm_list = Getattr(n,"throws"))) {
|
if ((throw_parm_list = Getattr(n,"throws")) || Getattr(n,"throw")) {
|
||||||
int gencomma = 0;
|
int gencomma = 0;
|
||||||
|
|
||||||
Append(w->def, " throw(");
|
Append(w->def, " throw(");
|
||||||
Append(declaration, " throw(");
|
Append(declaration, " throw(");
|
||||||
|
|
||||||
Swig_typemap_attach_parms("throws", throw_parm_list, 0);
|
if (throw_parm_list) Swig_typemap_attach_parms("throws", throw_parm_list, 0);
|
||||||
for (p = throw_parm_list; p; p=nextSibling(p)) {
|
for (p = throw_parm_list; p; p=nextSibling(p)) {
|
||||||
if ((tm = Getattr(p,"tmap:throws"))) {
|
if ((tm = Getattr(p,"tmap:throws"))) {
|
||||||
addThrows(n, "tmap:throws", p);
|
addThrows(n, "tmap:throws", p);
|
||||||
|
|
@ -3448,7 +3448,7 @@ class JAVA : public Language {
|
||||||
* ------------------------------------------------------------ */
|
* ------------------------------------------------------------ */
|
||||||
|
|
||||||
int classDirectorInit(Node *n) {
|
int classDirectorInit(Node *n) {
|
||||||
String *director_classname = directorClassName(n);
|
/* String *director_classname = directorClassName(n);*/
|
||||||
|
|
||||||
Delete(none_comparison);
|
Delete(none_comparison);
|
||||||
none_comparison = NewString(""); // not used
|
none_comparison = NewString(""); // not used
|
||||||
|
|
@ -3460,7 +3460,7 @@ class JAVA : public Language {
|
||||||
|
|
||||||
Printf(f_directors_h, "%s {\n", Getattr(n, "director:decl"));
|
Printf(f_directors_h, "%s {\n", Getattr(n, "director:decl"));
|
||||||
Printf(f_directors_h, "\npublic:\n");
|
Printf(f_directors_h, "\npublic:\n");
|
||||||
Printf(f_directors_h, " virtual ~%s();\n", director_classname);
|
/* Printf(f_directors_h, " virtual ~%s();\n", director_classname);*/
|
||||||
Printf(f_directors_h, " void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls);\n");
|
Printf(f_directors_h, " void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls);\n");
|
||||||
Printf(f_directors_h, " bool swig_overrides(int n) {\n");
|
Printf(f_directors_h, " bool swig_overrides(int n) {\n");
|
||||||
Printf(f_directors_h, " return swig_override[n];\n");
|
Printf(f_directors_h, " return swig_override[n];\n");
|
||||||
|
|
@ -3470,8 +3470,13 @@ class JAVA : public Language {
|
||||||
least on the FreeBSD platform, if not for others. It also doesn't hurt to put
|
least on the FreeBSD platform, if not for others. It also doesn't hurt to put
|
||||||
"default" destructors into the code, even if they don't appear to do anything.) */
|
"default" destructors into the code, even if they don't appear to do anything.) */
|
||||||
|
|
||||||
|
/* This hack has been removed so that correct code is emitted for working compilers, see the director_exception.i testcase.
|
||||||
|
* Otherwise a search up all destructors is probably needed to understand exception specifications. Not easy with multiple inheritance. */
|
||||||
|
|
||||||
|
/*
|
||||||
Printf(f_directors, "%s::~%s() {\n", director_classname, director_classname);
|
Printf(f_directors, "%s::~%s() {\n", director_classname, director_classname);
|
||||||
Printf(f_directors, "}\n\n");
|
Printf(f_directors, "}\n\n");
|
||||||
|
*/
|
||||||
|
|
||||||
/* Keep track of the director methods for this class */
|
/* Keep track of the director methods for this class */
|
||||||
first_class_dmethod = curr_class_dmethod = n_dmethods;
|
first_class_dmethod = curr_class_dmethod = n_dmethods;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue