%module template_virtual // Submitted by Marcelo Matus // assertion emitted with templates + derivation + pure virtual member // allocate.cxx:47: int Allocate::is_abstract_inherit(Node*, Node*): // Assertion `dn' failed. %inline %{ template class A { public: virtual ~A() { } 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 B : public A { protected: B() { } // defined protected as swig generates constructor by default }; %} %template(A_int) A; %template(B_int) B; // !!!! it crashes right here !!!!!