fix bug #1292926
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7698 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
43bf5a210f
commit
a2ee7e332d
2 changed files with 26 additions and 10 deletions
|
|
@ -51,4 +51,17 @@
|
||||||
// declaration:
|
// declaration:
|
||||||
// using A::get_a;
|
// using A::get_a;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class IndexReader{
|
||||||
|
public:
|
||||||
|
virtual void norms() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MultiReader : public IndexReader {
|
||||||
|
protected:
|
||||||
|
MultiReader();
|
||||||
|
};
|
||||||
%}
|
%}
|
||||||
|
|
|
||||||
|
|
@ -310,7 +310,9 @@ class Allocate : public Dispatcher {
|
||||||
}
|
}
|
||||||
List *abstract = Getattr(base,"abstract");
|
List *abstract = Getattr(base,"abstract");
|
||||||
if (abstract) {
|
if (abstract) {
|
||||||
for (int i = 0; i < Len(abstract); i++) {
|
int dabstract = 0;
|
||||||
|
int len = Len(abstract);
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
Node *nn = Getitem(abstract,i);
|
Node *nn = Getitem(abstract,i);
|
||||||
String *name = Getattr(nn,"name");
|
String *name = Getattr(nn,"name");
|
||||||
if (!name) continue;
|
if (!name) continue;
|
||||||
|
|
@ -326,17 +328,19 @@ class Allocate : public Dispatcher {
|
||||||
Delete(base_decl);
|
Delete(base_decl);
|
||||||
|
|
||||||
if (!dn) {
|
if (!dn) {
|
||||||
List *abstract = Getattr(n,"abstract");
|
List *nabstract = Getattr(n,"abstract");
|
||||||
if (!abstract) {
|
if (!nabstract) {
|
||||||
abstract = NewList();
|
nabstract = NewList();
|
||||||
Setattr(n,"abstract",abstract);
|
Setattr(n,"abstract",nabstract);
|
||||||
} else {
|
}
|
||||||
if (!Getattr(n,"abstract:firstnode"))
|
Append(nabstract,nn);
|
||||||
|
if (!Getattr(n,"abstract:firstnode")) {
|
||||||
Setattr(n,"abstract:firstnode",nn);
|
Setattr(n,"abstract:firstnode",nn);
|
||||||
}
|
}
|
||||||
Append(abstract,nn);
|
dabstract = base != n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (dabstract) return 1;
|
||||||
}
|
}
|
||||||
List *bases = Getattr(base,"allbases");
|
List *bases = Getattr(base,"allbases");
|
||||||
if (!bases) return 0;
|
if (!bases) return 0;
|
||||||
|
|
@ -537,7 +541,6 @@ public:
|
||||||
/* Check if the class is abstract via inheritance. This might occur if a class didn't have
|
/* Check if the class is abstract via inheritance. This might occur if a class didn't have
|
||||||
any pure virtual methods of its own, but it didn't implement all of the pure methods in
|
any pure virtual methods of its own, but it didn't implement all of the pure methods in
|
||||||
a base class */
|
a base class */
|
||||||
|
|
||||||
if (!Getattr(n,"abstract") && is_abstract_inherit(n)) {
|
if (!Getattr(n,"abstract") && is_abstract_inherit(n)) {
|
||||||
if (((Getattr(n,"allocate:public_constructor") || (!GetFlag(n,"feature:nodefault") && !Getattr(n,"allocate:has_constructor"))))) {
|
if (((Getattr(n,"allocate:public_constructor") || (!GetFlag(n,"feature:nodefault") && !Getattr(n,"allocate:has_constructor"))))) {
|
||||||
if (!GetFlag(n,"feature:notabstract")) {
|
if (!GetFlag(n,"feature:notabstract")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue