Fix the handling of director classes with final methods
Generated SwigDirector_* classes were attempting to override methods marked as final. In addition, give a warning if the destructor of a director class is final. Closes #564.
This commit is contained in:
parent
207d9591f9
commit
c3d652c785
7 changed files with 87 additions and 7 deletions
18
Examples/test-suite/cpp11_final_directors.i
Normal file
18
Examples/test-suite/cpp11_final_directors.i
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
%module(directors="1") cpp11_final_directors
|
||||
|
||||
%warnfilter(SWIGWARN_PARSE_KEYWORD) final;
|
||||
|
||||
%director Derived;
|
||||
|
||||
%inline %{
|
||||
struct Base {
|
||||
virtual void basemeth() final {}
|
||||
virtual ~Base() {}
|
||||
};
|
||||
|
||||
struct Derived : Base {
|
||||
virtual int derivedmeth() final { return 1; }
|
||||
virtual int meth() { return 2; }
|
||||
virtual ~Derived() {}
|
||||
};
|
||||
%}
|
||||
11
Examples/test-suite/python/cpp11_final_directors_runme.py
Normal file
11
Examples/test-suite/python/cpp11_final_directors_runme.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import cpp11_final_directors
|
||||
|
||||
class Derived2(cpp11_final_directors.Derived):
|
||||
|
||||
def meth(self):
|
||||
return 3
|
||||
|
||||
|
||||
b = Derived2()
|
||||
if b.meth() != 3:
|
||||
raise RuntimeError
|
||||
Loading…
Add table
Add a link
Reference in a new issue