aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/template_virtual.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/template_virtual.i')
-rw-r--r--Examples/test-suite/template_virtual.i32
1 files changed, 32 insertions, 0 deletions
diff --git a/Examples/test-suite/template_virtual.i b/Examples/test-suite/template_virtual.i
new file mode 100644
index 000000000..cc5949a4f
--- /dev/null
+++ b/Examples/test-suite/template_virtual.i
@@ -0,0 +1,32 @@
+%module template_virtual
+
+// Submitted by Marcelo Matus
+// assertion emmitted with templates + derivation + pure virtual member
+// allocate.cxx:47: int Allocate::is_abstract_inherit(Node*, Node*):
+// Assertion `dn' failed.
+
+%inline %{
+
+ template <class T>
+ class A
+ {
+ public:
+ virtual void say_hi() = 0; // only fails with pure virtual methods
+
+ virtual void say_hello(); // this works fine
+
+ protected:
+ A() { } // defined protected as swig generates constructor by default
+ };
+
+ template <class T>
+ class B : public A<T>
+ {
+ protected:
+ B() { } // defined protected as swig generates constructor by default
+ };
+
+%}
+
+%template(A_int) A<int>;
+%template(B_int) B<int>; // !!!! it crashes right here !!!!!