Fixed odd class scope bug.

class Foo {
public:
    int Foo::bar(int x);
};

SWIG just drops the "Foo" prefix the method and continues (previously,
the declaration was ignored entirely).


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@4591 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Dave Beazley 2003-03-20 19:36:51 +00:00
commit 4138222abd

View file

@ -2088,8 +2088,22 @@ c_decl : storage_class type declarator initializer c_decl_tail {
/* Look for "::" declarations (ignored) */
if (Strstr($3.id,"::")) {
Delete($$);
$$ = $5;
if (Namespaceprefix) {
/* This is a special case. If the scope name of the declaration exactly
matches that of the declaration, then we will allow it. Otherwise, delete. */
String *p = Swig_scopename_prefix($3.id);
if (Strcmp(p,Namespaceprefix) == 0) {
Setattr($$,"name",Swig_scopename_last($3.id));
set_nextSibling($$,$5);
} else {
Delete($$);
$$ = $5;
}
Delete(p);
} else {
Delete($$);
$$ = $5;
}
} else {
set_nextSibling($$,$5);
}