Merge branch 'ZackerySpytz-director-classes-final-methods'
* ZackerySpytz-director-classes-final-methods: Warning tweaks for destructors that are final in director classes Documentation for directors and virtual final methods Fixes for final destructors in director classes Warning fix for final destructor in directors Remove a useless warning filter Fix the handling of director classes with final methods
This commit is contained in:
commit
bc0645ce2b
14 changed files with 128 additions and 20 deletions
|
|
@ -572,6 +572,7 @@ CPP11_TEST_CASES += \
|
|||
cpp11_director_enums \
|
||||
cpp11_directors \
|
||||
cpp11_explicit_conversion_operators \
|
||||
cpp11_final_directors \
|
||||
cpp11_final_override \
|
||||
cpp11_function_objects \
|
||||
cpp11_inheriting_constructors \
|
||||
|
|
|
|||
33
Examples/test-suite/cpp11_final_directors.i
Normal file
33
Examples/test-suite/cpp11_final_directors.i
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
%module(directors="1") cpp11_final_directors
|
||||
|
||||
%director Derived;
|
||||
|
||||
// Check SWIG will not wrap these classes as directors where the destructors are final
|
||||
%director BaseFinalDestructor;
|
||||
%director BaseFinalDestructor2;
|
||||
|
||||
%warnfilter(SWIGWARN_LANG_DIRECTOR_FINAL) BaseFinalDestructor::~BaseFinalDestructor;
|
||||
%warnfilter(SWIGWARN_LANG_DIRECTOR_FINAL) BaseFinalDestructor2::~BaseFinalDestructor2;
|
||||
|
||||
%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() {}
|
||||
};
|
||||
|
||||
struct BaseFinalDestructor {
|
||||
virtual void basefinalmeth() final {}
|
||||
virtual ~BaseFinalDestructor() final {}
|
||||
};
|
||||
|
||||
struct BaseFinalDestructor2 {
|
||||
virtual void basefinalmeth() {}
|
||||
virtual ~BaseFinalDestructor2() final {}
|
||||
};
|
||||
%}
|
||||
1
Examples/test-suite/errors/cpp_final_destructor.stderr
Normal file
1
Examples/test-suite/errors/cpp_final_destructor.stderr
Normal file
|
|
@ -0,0 +1 @@
|
|||
cpp_final_destructor.i:7: Warning 525: Destructor BaseFinal::~BaseFinal() is final, BaseFinal cannot be a director class.
|
||||
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