Ignored nested class/struct warnings now display the name of the ignored class/struct.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11728 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
ec6bf1ec96
commit
9d65c100b9
6 changed files with 59 additions and 6 deletions
|
|
@ -1,6 +1,9 @@
|
|||
Version 1.3.41 (in progress)
|
||||
============================
|
||||
|
||||
2009-11-08: wsfulton
|
||||
Ignored nested class/struct warnings now display the name of the ignored class/struct.
|
||||
|
||||
2009-11-07: wsfulton
|
||||
Bug #1514681 - Fix nested template classes within a namespace generated uncompileable
|
||||
code and introduced strange side effects to other wrapper code especially code
|
||||
|
|
|
|||
|
|
@ -399,8 +399,7 @@ example.i(4): Syntax error in input.
|
|||
<li>308. Namespace alias '<em>name</em>' not allowed here. Assuming '<em>name</em>'
|
||||
<li>309. [private | protected] inheritance ignored.
|
||||
<li>310. Template '<em>name</em>' was already wrapped as '<em>name</em>' (ignored)
|
||||
<li>311. Template partial specialization not supported.
|
||||
<li>312. Nested classes not currently supported (ignored).
|
||||
<li>312. Nested class not currently supported (<em>name</em> ignored).
|
||||
<li>313. Unrecognized extern type "<em>name</em>" (ignored).
|
||||
<li>314. '<em>identifier</em>' is a <em>lang</em> keyword.
|
||||
<li>315. Nothing known about '<em>identifier</em>'.
|
||||
|
|
|
|||
|
|
@ -242,6 +242,7 @@ CPP_TEST_CASES += \
|
|||
namespace_typemap \
|
||||
namespace_virtual_method \
|
||||
naturalvar \
|
||||
nested_class \
|
||||
nested_comment \
|
||||
newobject1 \
|
||||
null_pointer \
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ This was reported in bug #909389 */
|
|||
|
||||
%module derived_nested
|
||||
|
||||
#pragma SWIG nowarn=SWIGWARN_PARSE_NESTED_CLASS
|
||||
|
||||
%inline %{
|
||||
|
||||
class A { int x; };
|
||||
|
|
@ -11,5 +13,10 @@ class B {
|
|||
class D : public A { int z; }; //ok
|
||||
};
|
||||
|
||||
struct BB {
|
||||
class CC { int y; };
|
||||
class DD : public A { int z; };
|
||||
struct EE : public A { int z; };
|
||||
};
|
||||
%}
|
||||
|
||||
|
|
|
|||
40
Examples/test-suite/nested_class.i
Normal file
40
Examples/test-suite/nested_class.i
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
%module nested_class
|
||||
|
||||
#pragma SWIG nowarn=SWIGWARN_PARSE_NESTED_CLASS
|
||||
|
||||
%inline %{
|
||||
struct Outer {
|
||||
struct Inner1 {
|
||||
int x;
|
||||
};
|
||||
|
||||
class Inner2 {
|
||||
public:
|
||||
int x;
|
||||
};
|
||||
|
||||
class {
|
||||
public:
|
||||
int a;
|
||||
};
|
||||
|
||||
struct {
|
||||
int b;
|
||||
};
|
||||
|
||||
union {
|
||||
int c;
|
||||
double d;
|
||||
};
|
||||
|
||||
class Inner3 {
|
||||
public:
|
||||
int x;
|
||||
} Inner3Name;
|
||||
|
||||
struct Inner4 {
|
||||
int x;
|
||||
} Inner4Name;
|
||||
};
|
||||
|
||||
%}
|
||||
|
|
@ -4395,7 +4395,7 @@ cpp_nested : storage_class cpptype ID LBRACE { cparse_start_line = cparse_line
|
|||
n->next = 0;
|
||||
add_nested(n);
|
||||
} else {
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS, cparse_file, cparse_line, "Nested %s not currently supported (ignored).\n", $2);
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS, cparse_file, cparse_line, "Nested %s not currently supported (%s ignored).\n", $2, $3);
|
||||
if (strcmp($2, "class") == 0) {
|
||||
/* For now, just treat the nested class as a forward
|
||||
* declaration (SF bug #909387). */
|
||||
|
|
@ -4416,7 +4416,10 @@ cpp_nested : storage_class cpptype ID LBRACE { cparse_start_line = cparse_line
|
|||
$$ = 0;
|
||||
if (cplus_mode == CPLUS_PUBLIC) {
|
||||
if (strcmp($2,"class") == 0) {
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS,cparse_file, cparse_line,"Nested class not currently supported (ignored)\n");
|
||||
if ($5.id)
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS, cparse_file, cparse_line,"Nested class not currently supported (%s ignored)\n", $5.id);
|
||||
else
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS, cparse_file, cparse_line,"Nested class not currently supported (ignored)\n");
|
||||
} else if ($5.id) {
|
||||
/* Generate some code for a new class */
|
||||
Nested *n = (Nested *) malloc(sizeof(Nested));
|
||||
|
|
@ -4445,7 +4448,7 @@ cpp_nested : storage_class cpptype ID LBRACE { cparse_start_line = cparse_line
|
|||
} SEMI {
|
||||
$$ = 0;
|
||||
if (cplus_mode == CPLUS_PUBLIC) {
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS,cparse_file, cparse_line,"Nested class not currently supported (ignored)\n");
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS, cparse_file, cparse_line,"Nested %s not currently supported (%s ignored)\n", $2, $3);
|
||||
}
|
||||
}
|
||||
/* This unfortunately introduces 4 shift/reduce conflicts, so instead the somewhat hacky nested_template is used for ignore nested template classes. */
|
||||
|
|
@ -4454,7 +4457,7 @@ cpp_nested : storage_class cpptype ID LBRACE { cparse_start_line = cparse_line
|
|||
} SEMI {
|
||||
$$ = 0;
|
||||
if (cplus_mode == CPLUS_PUBLIC) {
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS,cparse_file, cparse_line,"Nested class not currently supported (ignored)\n");
|
||||
Swig_warning(WARN_PARSE_NESTED_CLASS, cparse_file, cparse_line,"Nested %s not currently supported (%s ignored)\n", $5, $6);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue