diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 2e523d8c9..63e20e1db 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -93,6 +93,7 @@ CPP_TEST_CASES += \ constructor_explicit \ constructor_value \ contract \ + compactdefaultargs \ conversion \ conversion_namespace \ conversion_ns_template \ diff --git a/Examples/test-suite/compactdefaultargs.i b/Examples/test-suite/compactdefaultargs.i new file mode 100644 index 000000000..a4462245d --- /dev/null +++ b/Examples/test-suite/compactdefaultargs.i @@ -0,0 +1,32 @@ +%module compactdefaultargs + +// compactdefaultargs off by default + +// The following should compile with compactdefaultargs off +%inline %{ +class Defaults1 { + static const int private_default = -1; +public: + static const double public_default = -1.0; + Defaults1(int a = private_default) {} + double ret(double d = public_default) { return d; } +}; +%} + + +// compactdefaultargs now on by default +%feature("compactdefaultargs"); + +// Turn compactdefaultargs off for the ret method which can't work with this feature +%feature("compactdefaultargs", "0") Defaults2(int a = private_default); + +%inline %{ +class Defaults2 { + static const int private_default = -1; +public: + static const double public_default = -1.0; + Defaults2(int a = private_default) {} + double ret(double d = public_default) { return d; } +}; +%} + diff --git a/Examples/test-suite/python/compactdefaultargs_runme.py b/Examples/test-suite/python/compactdefaultargs_runme.py new file mode 100644 index 000000000..ff865714c --- /dev/null +++ b/Examples/test-suite/python/compactdefaultargs_runme.py @@ -0,0 +1,20 @@ +from compactdefaultargs import * + +defaults1 = Defaults1(1000) +defaults1 = Defaults1() + +if defaults1.ret(10.0) != 10.0: + raise RuntimeError + +if defaults1.ret() != -1.0: + raise RuntimeError + +defaults2 = Defaults2(1000) +defaults2 = Defaults2() + +if defaults2.ret(10.0) != 10.0: + raise RuntimeError + +if defaults2.ret() != -1.0: + raise RuntimeError +