diff --git a/CHANGES.current b/CHANGES.current index 9662acb28..0232208b7 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -7,6 +7,23 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ Version 4.0.0 (in progress) =========================== +2017-07-07: wsfulton + [Python] Fix display of documented template types when using the autodoc + feature. For example when wrapping: + + %feature("autodoc"); + template struct T {}; + %template(TInteger) T; + + the generated documentation contains: + """Proxy of C++ T< int > class.""" + instead of: + """Proxy of C++ T<(int)> class.""" + and + """__init__(TInteger self) -> TInteger""" + instead of + """__init__(T<(int)> self) -> TInteger""" + 2017-06-27: nihaln [PHP] Update the OUTPUT Typemap to add return statement to the PHP Wrapper. diff --git a/Examples/test-suite/autodoc.i b/Examples/test-suite/autodoc.i index a2d9f5b4e..97c05d791 100644 --- a/Examples/test-suite/autodoc.i +++ b/Examples/test-suite/autodoc.i @@ -133,6 +133,14 @@ typedef int Integer; void banana(S *a, const struct tagS *b, int c, Integer d) {} %} +// Check docs for a template type +%inline %{ +template struct T { + T inout(T t) { return t; } +}; +%} +%template(TInteger) T; + %inline %{ #ifdef SWIGPYTHON_BUILTIN bool is_python_builtin() { return true; } @@ -140,4 +148,3 @@ bool is_python_builtin() { return true; } bool is_python_builtin() { return false; } #endif %} - diff --git a/Examples/test-suite/python/autodoc_runme.py b/Examples/test-suite/python/autodoc_runme.py index af04c8c0e..bf2fa621d 100644 --- a/Examples/test-suite/python/autodoc_runme.py +++ b/Examples/test-suite/python/autodoc_runme.py @@ -365,3 +365,9 @@ check(func_output.__doc__, "func_output() -> int") check(func_inout.__doc__, "func_inout(int * INOUT) -> int") check(func_cb.__doc__, "func_cb(int c, int d) -> int") check(banana.__doc__, "banana(S a, S b, int c, Integer d)") + +check(TInteger.__doc__, "Proxy of C++ T< int > class.", "::T< int >") +check(TInteger.__init__.__doc__, "__init__(TInteger self) -> TInteger", None, skip) +check(TInteger.inout.__doc__, + "inout(TInteger self, TInteger t) -> TInteger", + "inout(TInteger t) -> TInteger") diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx index 581064046..64905bc21 100644 --- a/Source/Modules/python.cxx +++ b/Source/Modules/python.cxx @@ -1960,9 +1960,9 @@ public: Delete(rname); } else { if (CPlusPlus) { - Printf(doc, "Proxy of C++ %s class.", real_classname); + Printf(doc, "Proxy of C++ %s class.", SwigType_namestr(real_classname)); } else { - Printf(doc, "Proxy of C %s struct.", real_classname); + Printf(doc, "Proxy of C %s struct.", SwigType_namestr(real_classname)); } } } @@ -1973,7 +1973,7 @@ public: String *paramList = make_autodocParmList(n, showTypes); Printf(doc, "__init__("); if (showTypes) - Printf(doc, "%s ", getClassName()); + Printf(doc, "%s ", class_name); if (Len(paramList)) Printf(doc, "self, %s) -> %s", paramList, class_name); else @@ -1984,7 +1984,7 @@ public: case AUTODOC_DTOR: if (showTypes) - Printf(doc, "__del__(%s self)", getClassName()); + Printf(doc, "__del__(%s self)", class_name); else Printf(doc, "__del__(self)"); break;