summaryrefslogtreecommitdiff
path: root/Source/Modules/modula3.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Modules/modula3.cxx')
-rw-r--r--Source/Modules/modula3.cxx30
1 files changed, 17 insertions, 13 deletions
diff --git a/Source/Modules/modula3.cxx b/Source/Modules/modula3.cxx
index 307c7857d..9983e69d2 100644
--- a/Source/Modules/modula3.cxx
+++ b/Source/Modules/modula3.cxx
@@ -2176,20 +2176,24 @@ MODULA3():
/* Deal with inheritance */
List *baselist = Getattr(n, "bases");
- if (baselist != NIL) {
+ if (baselist) {
Iterator base = First(baselist);
- if (base.item) {
- c_baseclassname = Getattr(base.item, "name");
- baseclass = Copy(getProxyName(c_baseclassname));
- if (baseclass) {
- c_baseclass = SwigType_namestr(Getattr(base.item, "name"));
+ while (base.item) {
+ if (!GetFlag(base.item, "feature:ignore")) {
+ String *baseclassname = Getattr(base.item, "name");
+ if (!c_baseclassname) {
+ c_baseclassname = baseclassname;
+ baseclass = Copy(getProxyName(baseclassname));
+ if (baseclass)
+ c_baseclass = SwigType_namestr(baseclassname);
+ } else {
+ /* Warn about multiple inheritance for additional base class(es) */
+ String *proxyclassname = Getattr(n, "classtypeobj");
+ Swig_warning(WARN_MODULA3_MULTIPLE_INHERITANCE, Getfile(n), Getline(n),
+ "Warning for %s, base %s ignored. Multiple inheritance is not supported in Modula 3.\n", SwigType_namestr(proxyclassname), SwigType_namestr(baseclassname));
+ }
}
base = Next(base);
- if (base.item != NIL) {
- Swig_warning(WARN_MODULA3_MULTIPLE_INHERITANCE, Getfile(n), Getline(n),
- "Warning for %s proxy: Base %s ignored. Multiple inheritance is not supported in Modula 3.\n",
- name, Getattr(base.item, "name"));
- }
}
}
@@ -2201,7 +2205,7 @@ MODULA3():
const String *pure_baseclass = typemapLookup(n, "m3base", name, WARN_NONE);
if (hasContent(pure_baseclass) && hasContent(baseclass)) {
Swig_warning(WARN_MODULA3_MULTIPLE_INHERITANCE, Getfile(n), Getline(n),
- "Warning for %s proxy: Base %s ignored. Multiple inheritance is not supported in Modula 3.\n", name, pure_baseclass);
+ "Warning for %s, base %s ignored. Multiple inheritance is not supported in Modula 3.\n", name, pure_baseclass);
}
// Pure Modula 3 interfaces
const String *pure_interfaces = typemapLookup(n, derived ? "m3interfaces_derived" : "m3interfaces",
@@ -2431,7 +2435,7 @@ MODULA3():
base = Next(base);
if (base.item) {
Swig_warning(WARN_MODULA3_MULTIPLE_INHERITANCE, Getfile(n), Getline(n),
- "Warning for %s proxy: Base %s ignored. Multiple inheritance is not supported in Modula 3.\n",
+ "Warning for %s, base %s ignored. Multiple inheritance is not supported in Modula 3.\n",
proxy_class_name, Getattr(base.item, "name"));
}
}