diff --git a/Examples/test-suite/csharp/multiple_inheritance_abstract_runme.cs b/Examples/test-suite/csharp/multiple_inheritance_abstract_runme.cs index 48173a6bc..4584be399 100644 --- a/Examples/test-suite/csharp/multiple_inheritance_abstract_runme.cs +++ b/Examples/test-suite/csharp/multiple_inheritance_abstract_runme.cs @@ -59,12 +59,12 @@ public class multiple_inheritance_abstract_runme { check(cb2.cbase2()!=2, "CBase2::cbase2() failed"); //Test abstract class as return value - ABase1 ab1=d3.clone(); + ABase1 ab1=d3.cloneit(); check(ab1.abase1()!=9, "Derived3::abase1() through ABase1 failed"); //Test concrete base class as return value - CBase1 cb6=d2.clone(); - CBase2 cb7=d1.clone(); + CBase1 cb6=d2.cloneit(); + CBase2 cb7=d1.cloneit(); check(cb6.cbase1y()!=6, "Derived2::cbase1y() through CBase1 failed"); check(cb7.cbase2()!=4, "Derived1:cbase2() through ABase1 failed"); diff --git a/Examples/test-suite/csharp/multiple_inheritance_nspace_runme.cs b/Examples/test-suite/csharp/multiple_inheritance_nspace_runme.cs index e7c653293..e24afb1f1 100644 --- a/Examples/test-suite/csharp/multiple_inheritance_nspace_runme.cs +++ b/Examples/test-suite/csharp/multiple_inheritance_nspace_runme.cs @@ -60,12 +60,12 @@ public class multiple_inheritance_nspace_runme { check(cb2.cbase2()!=2, "CBase2::cbase2() failed"); //Test nspace class as return value - IABase1 ab1=d3.clone(); + IABase1 ab1=d3.cloneit(); check(ab1.abase1()!=9, "Derived3::abase1() through ABase1 failed"); //Test concrete base class as return value - ICBase1 cb6=d2.clone(); - ICBase2 cb7=d1.clone(); + ICBase1 cb6=d2.cloneit(); + ICBase2 cb7=d1.cloneit(); check(cb6.cbase1y()!=6, "Derived2::cbase1y() through CBase1 failed"); check(cb7.cbase2()!=4, "Derived1:cbase2() through ABase1 failed"); diff --git a/Examples/test-suite/java/multiple_inheritance_abstract_runme.java b/Examples/test-suite/java/multiple_inheritance_abstract_runme.java index a215c6091..1489d92a7 100644 --- a/Examples/test-suite/java/multiple_inheritance_abstract_runme.java +++ b/Examples/test-suite/java/multiple_inheritance_abstract_runme.java @@ -67,12 +67,12 @@ public class multiple_inheritance_abstract_runme { check(cb2.cbase2()!=2, "CBase2::cbase2() failed"); //Test abstract class as return value - ABase1 ab1=d3.clone(); + ABase1 ab1=d3.cloneit(); check(ab1.abase1()!=9, "Derived3::abase1() through ABase1 failed"); //Test concrete base class as return value - CBase1 cb6=d2.clone(); - CBase2 cb7=d1.clone(); + CBase1 cb6=d2.cloneit(); + CBase2 cb7=d1.cloneit(); check(cb6.cbase1y()!=6, "Derived2::cbase1y() through CBase1 failed"); check(cb7.cbase2()!=4, "Derived1:cbase2() through ABase1 failed"); diff --git a/Examples/test-suite/java/multiple_inheritance_nspace_runme.java b/Examples/test-suite/java/multiple_inheritance_nspace_runme.java index e2f1341fd..8d7835cb3 100644 --- a/Examples/test-suite/java/multiple_inheritance_nspace_runme.java +++ b/Examples/test-suite/java/multiple_inheritance_nspace_runme.java @@ -69,12 +69,12 @@ public class multiple_inheritance_nspace_runme { check(cb2.cbase2()!=2, "CBase2::cbase2() failed"); //Test nspace class as return value - IABase1 ab1=d3.clone(); + IABase1 ab1=d3.cloneit(); check(ab1.abase1()!=9, "Derived3::abase1() through ABase1 failed"); //Test concrete base class as return value - ICBase1 cb6=d2.clone(); - ICBase2 cb7=d1.clone(); + ICBase1 cb6=d2.cloneit(); + ICBase2 cb7=d1.cloneit(); check(cb6.cbase1y()!=6, "Derived2::cbase1y() through CBase1 failed"); check(cb7.cbase2()!=4, "Derived1:cbase2() through ABase1 failed"); diff --git a/Examples/test-suite/multiple_inheritance_abstract.i b/Examples/test-suite/multiple_inheritance_abstract.i index 8430ff342..b54a37dea 100644 --- a/Examples/test-suite/multiple_inheritance_abstract.i +++ b/Examples/test-suite/multiple_inheritance_abstract.i @@ -1,6 +1,10 @@ // This is a copy of the multiple_inheritance_abstract test %module multiple_inheritance_abstract +%warnfilter(SWIGWARN_RUBY_MULTIPLE_INHERITANCE, + SWIGWARN_D_MULTIPLE_INHERITANCE, + SWIGWARN_PHP_MULTIPLE_INHERITANCE); /* languages not supporting multiple inheritance or %interface */ + #if defined(SWIGJAVA) || defined(SWIGCSHARP) %include "swiginterface.i" %interface_impl(Space::ABase1) @@ -8,6 +12,12 @@ %interface_impl(Space::CBase2) #endif +#if defined(SWIGD) +// Missing multiple inheritance support results in incorrect use of override +%ignore CBase1; +%ignore CBase2; +#endif + %inline %{ namespace Space { struct CBase1 { @@ -48,7 +58,7 @@ namespace Space { virtual int cbase2() { return 4; } - virtual CBase2 *clone() { + virtual CBase2 *cloneit() { return new Derived1(*this); } void derived1() { @@ -65,7 +75,7 @@ namespace Space { virtual int abase1() { return 5; } - virtual CBase1 *clone() { + virtual CBase1 *cloneit() { return new Derived2(*this); } void derived2() { @@ -84,7 +94,7 @@ namespace Space { } virtual void cbase1x() { } - virtual ABase1 *clone() { + virtual ABase1 *cloneit() { return new Derived3(*this); } void derived3() { diff --git a/Examples/test-suite/multiple_inheritance_interfaces.i b/Examples/test-suite/multiple_inheritance_interfaces.i index f050b7f47..9444f9dbf 100644 --- a/Examples/test-suite/multiple_inheritance_interfaces.i +++ b/Examples/test-suite/multiple_inheritance_interfaces.i @@ -1,18 +1,24 @@ %module multiple_inheritance_interfaces +%warnfilter(SWIGWARN_RUBY_MULTIPLE_INHERITANCE, + SWIGWARN_D_MULTIPLE_INHERITANCE, + SWIGWARN_PHP_MULTIPLE_INHERITANCE); /* languages not supporting multiple inheritance or %interface */ + #if defined(SWIGJAVA) || defined(SWIGCSHARP) %include "swiginterface.i" %interface_custom("A", "IA", IA) %interface_custom("B", "IB", IB) %interface_custom("%(strip:[I])s", "I%s", IC) // same as %interface_custom("C", "IC", IC) #endif + %inline %{ struct IA { virtual void ia() {}; virtual void ia(const char *s, bool b = true) {} virtual void ia(int i) {} + virtual ~IA() {} }; -struct IB { virtual void ib() {} }; +struct IB { virtual ~IB() {} virtual void ib() {} }; struct IC : IA, IB {}; struct D : IC {}; struct E : D {}; @@ -24,7 +30,7 @@ struct E : D {}; %interface_custom("L", "IL", IL) #endif %inline %{ -struct IJ { virtual void ij() {} }; +struct IJ { virtual ~IJ() {}; virtual void ij() {} }; struct IK : IJ {}; struct IL : IK {}; struct M : IL {}; @@ -34,8 +40,8 @@ struct M : IL {}; %interface_custom("Q", "IQ", IQ) #endif %inline %{ -struct P { virtual void p() {}; }; -struct IQ { virtual void iq() {}; }; +struct P { virtual ~P() {} virtual void p() {} }; +struct IQ { virtual ~IQ() {} virtual void iq() {} }; struct R : IQ, P {}; struct S : P, IQ {}; struct T : IQ {}; diff --git a/Examples/test-suite/multiple_inheritance_nspace.i b/Examples/test-suite/multiple_inheritance_nspace.i index 0436e071f..4faef5749 100644 --- a/Examples/test-suite/multiple_inheritance_nspace.i +++ b/Examples/test-suite/multiple_inheritance_nspace.i @@ -1,10 +1,14 @@ // This is a copy of the multiple_inheritance_abstract test %module multiple_inheritance_nspace +%warnfilter(SWIGWARN_RUBY_MULTIPLE_INHERITANCE, + SWIGWARN_D_MULTIPLE_INHERITANCE, + SWIGWARN_PHP_MULTIPLE_INHERITANCE); /* languages not supporting multiple inheritance or %interface */ + // nspace feature only supported by these languages #if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGD) || defined(SWIGLUA) || defined(SWIGJAVASCRIPT) - %nspace; +#endif #if defined(SWIGJAVA) || defined(SWIGCSHARP) %include "swiginterface.i" @@ -13,6 +17,12 @@ %interface(Space::CBase2) #endif +#if defined(SWIGD) +// Missing multiple inheritance support results in incorrect use of override +%ignore CBase1; +%ignore CBase2; +#endif + #if defined(SWIGJAVA) SWIG_JAVABODY_PROXY(public, public, SWIGTYPE) #endif @@ -57,7 +67,7 @@ namespace Space { virtual int cbase2() { return 4; } - virtual CBase2 *clone() { + virtual CBase2 *cloneit() { return new Derived1(*this); } void derived1() { @@ -74,7 +84,7 @@ namespace Space { virtual int abase1() { return 5; } - virtual CBase1 *clone() { + virtual CBase1 *cloneit() { return new Derived2(*this); } void derived2() { @@ -93,7 +103,7 @@ namespace Space { } virtual void cbase1x() { } - virtual ABase1 *clone() { + virtual ABase1 *cloneit() { return new Derived3(*this); } void derived3() { @@ -326,4 +336,3 @@ namespace Space { %} -#endif