Testcase for testing __new__ override Python 3.6 fix

Issue #1357
This commit is contained in:
William S Fulton 2018-12-20 08:05:54 +00:00
commit 6e2b54be2f
3 changed files with 39 additions and 0 deletions

View file

@ -3,3 +3,7 @@ import python_pythoncode
# No need to actually do anything, this is a regression test for a bug which
# caused an invalid python_pythoncode.py to be generated, so if we can import
# it the bug is still fixed.
# A later test enhancement checking __new__ requires some code...
f = python_pythoncode.get_foo()
f = python_pythoncode.Foo()

View file

@ -29,3 +29,33 @@ struct TYPE2 {
struct TYPE { };
struct TYPE2 { };
%}
// Overriding __new__ test: https://github.com/swig/swig/pull/1357
%inline %{
class Foo {
public:
virtual ~Foo() {}
Foo() {}
};
Foo* get_foo() {return new Foo();}
%}
%pythoncode %{
print_debug = True
%}
%extend Foo {
// Note that %pythoncode is not available with -builtin
%pythoncode %{
def __new__(cls, *args, **kwargs):
if print_debug:
print('in Foo.__new__()')
return super(Foo, cls).__new__(cls)
def __init__(self):
if print_debug:
print('in Foo.__init__()')
%}
};