Hello,
the following code yields warning 512 "Illegal destructor name"
---------- %< -------------
%module testmod1
%inline %{
struct A {};
template <class X, class T = int>
struct B
{
virtual ~B() { }
};
template <class X>
struct B<X,int>
{
// swig reports "illegal destructor name" (only?) if this destructor
// is virtual
virtual ~B() { }
};
%}
%template(B_T_F) B<A,float>;
%template(B_T_I) B<A>;
---------- %< -------------
Attached code to reproduce this.
Code to reproduce bug.
I patched Source/CParse/parser.y and it seems to fix problem (see patch attached). Not sure about side effects. There was (intentional?) discrepancy in naming non-virtual and virtual destructor nodes. For virtual destructors, the parser always tried to append template specification to the name.
Last edit: Paweł Tomulik 2012-12-21
Thanks, patch applied for swig-2.0.10.