diff --git a/SWIG/Examples/test-suite/common.mk b/SWIG/Examples/test-suite/common.mk index c2ec608bb..bb1f02765 100644 --- a/SWIG/Examples/test-suite/common.mk +++ b/SWIG/Examples/test-suite/common.mk @@ -147,6 +147,7 @@ CPP_TEST_CASES += \ grouping \ ignore_parameter \ import_nomodule \ + inherit \ inherit_missing \ inherit_same_name \ inherit_void_arg \ diff --git a/SWIG/Examples/test-suite/inherit.i b/SWIG/Examples/test-suite/inherit.i new file mode 100644 index 000000000..e4eee23b1 --- /dev/null +++ b/SWIG/Examples/test-suite/inherit.i @@ -0,0 +1,19 @@ +// Test that was failing for Perl - the non-member Foo was being called when the member version was intended +%module inherit + +%inline %{ + +const char* Foo(void) { + return "Non-member Foo"; +} + +class CBase { +public: + const char* Foo(void) { + return "CBase::Foo"; + } +}; + +class CDerived : public CBase {}; + +%} diff --git a/SWIG/Examples/test-suite/perl5/inherit_runme.pl b/SWIG/Examples/test-suite/perl5/inherit_runme.pl new file mode 100644 index 000000000..d9435aa92 --- /dev/null +++ b/SWIG/Examples/test-suite/perl5/inherit_runme.pl @@ -0,0 +1,9 @@ +use inherit; + +$der = new inherit::CDerived(); +$str = $der->Foo(); + +if ($str != "CBase::Foo") { + die "test failed"; +} +