Merge branch 'wkalinin-nested-ignore-fix'

* wkalinin-nested-ignore-fix:
  renamed test module, in accordance with other tests
  function body fixed
  added foo() definition to satisfy some test linking fails
  func() renamed to foo() for 'go'
  fixed test-suite/nested_ignore.i
  test for #662
  fix for nested ignored types

Closes #662
This commit is contained in:
William S Fulton 2016-06-26 00:33:19 +01:00
commit b24e970a28
4 changed files with 39 additions and 6 deletions

View file

@ -308,6 +308,7 @@ CPP_TEST_CASES += \
nested_class \ nested_class \
nested_directors \ nested_directors \
nested_comment \ nested_comment \
nested_ignore \
nested_scope \ nested_scope \
nested_template_base \ nested_template_base \
nested_workaround \ nested_workaround \

View file

@ -0,0 +1,24 @@
%module nested_ignore
%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) B::C::D;
%rename($ignore) B::C;
%inline %{
namespace B {
class C {
public:
struct D {
};
};
class E {
public:
typedef C::D D;
};
struct F
{
const E::D foo(){ return E::D(); }
};
}
%}

View file

@ -188,8 +188,12 @@ public:
String *symname = Copy(Getattr(n, "sym:name")); String *symname = Copy(Getattr(n, "sym:name"));
if (symname && !GetFlag(n, "feature:flatnested")) { if (symname && !GetFlag(n, "feature:flatnested")) {
for (Node *outer_class = Getattr(n, "nested:outer"); outer_class; outer_class = Getattr(outer_class, "nested:outer")) { for (Node *outer_class = Getattr(n, "nested:outer"); outer_class; outer_class = Getattr(outer_class, "nested:outer")) {
if (String* name = Getattr(outer_class, "sym:name")) {
Push(symname, "."); Push(symname, ".");
Push(symname, Getattr(outer_class, "sym:name")); Push(symname, name);
}
else
return NULL;
} }
} }
if (nspace) { if (nspace) {

View file

@ -211,8 +211,12 @@ public:
String *symname = Copy(Getattr(n, "sym:name")); String *symname = Copy(Getattr(n, "sym:name"));
if (symname && !GetFlag(n, "feature:flatnested")) { if (symname && !GetFlag(n, "feature:flatnested")) {
for (Node *outer_class = Getattr(n, "nested:outer"); outer_class; outer_class = Getattr(outer_class, "nested:outer")) { for (Node *outer_class = Getattr(n, "nested:outer"); outer_class; outer_class = Getattr(outer_class, "nested:outer")) {
if (String* name = Getattr(outer_class, "sym:name")) {
Push(symname, jnidescriptor ? "$" : "."); Push(symname, jnidescriptor ? "$" : ".");
Push(symname, Getattr(outer_class, "sym:name")); Push(symname, name);
}
else
return NULL;
} }
} }
if (nspace) { if (nspace) {