diff --git a/Examples/test-suite/nested_extend_c.i b/Examples/test-suite/nested_extend_c.i index 0e1495f86..fb3c053c4 100644 --- a/Examples/test-suite/nested_extend_c.i +++ b/Examples/test-suite/nested_extend_c.i @@ -10,6 +10,7 @@ char hi_extend() { return $self->c; } + static const long swig_size = sizeof(hiA); } %extend lowA { lowA() { @@ -21,6 +22,7 @@ int low_extend() { return $self->num; } + static const long swig_size = sizeof(lowA); } %extend hiB { @@ -32,6 +34,7 @@ char hi_extend() { return $self->c; } + static const long swig_size = sizeof(hiB); } %extend lowB { lowB() { @@ -43,6 +46,7 @@ int low_extend() { return $self->num; } + static const long swig_size = sizeof(lowB); } %extend FOO_bar { @@ -50,6 +54,9 @@ $self->d = 1; } }; +%extend NestedA { + static const long swig_size = sizeof(NestedA); +} #endif diff --git a/Source/Modules/nested.cxx b/Source/Modules/nested.cxx index 9ec52ead1..c4ab6a8ea 100644 --- a/Source/Modules/nested.cxx +++ b/Source/Modules/nested.cxx @@ -362,7 +362,15 @@ void Swig_nested_name_unnamed_c_structs(Node *n) { Delete(bases); } Setattr(classhash, name, c); + + // Merge the extension into the symbol table + if (Node *am = Getattr(Swig_extend_hash(), name)) { + Swig_extend_merge(c, am); + Swig_extend_append_previous(c, am); + Delattr(Swig_extend_hash(), name); + } Swig_symbol_popscope(); + // process declarations following this type (assign correct new type) SwigType *ty = Copy(name); Node *decl = nextSibling(c); @@ -376,12 +384,6 @@ void Swig_nested_name_unnamed_c_structs(Node *n) { decl = nextSibling(decl); } Delete(ty); - if (Node *am = Getattr(Swig_extend_hash(), name)) { - // Merge the extension into the symbol table - Swig_extend_merge(c, am); - Swig_extend_append_previous(c, am); - Delattr(Swig_extend_hash(), name); - } Swig_symbol_setscope(Swig_symbol_global_scope()); add_symbols_c(c);