diff --git a/CHANGES.current b/CHANGES.current index b406611dc..d41a4c235 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -7,6 +7,9 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ Version 4.1.0 (in progress) =========================== +2022-04-07: olly + #1750 SWIG now recognises and ignores Doxygen group commands `@{` and `@}`. + 2022-04-06: wsfulton ./configure now enables C++11 and later C++ standards testing by default (when running: 'make check'). diff --git a/Examples/test-suite/doxygen_parsing.i b/Examples/test-suite/doxygen_parsing.i index 3a559053d..9df0097ec 100644 --- a/Examples/test-suite/doxygen_parsing.i +++ b/Examples/test-suite/doxygen_parsing.i @@ -133,6 +133,15 @@ struct SomeAnotherStruct } }; +struct Foo1750 +{ + /// @name Group name + /// @{ + int a; + /// @} + int b; +}; + #ifdef SWIGPYTHON_BUILTIN bool is_python_builtin() { return true; } #else diff --git a/Examples/test-suite/java/doxygen_parsing_runme.java b/Examples/test-suite/java/doxygen_parsing_runme.java index 29e524f78..2c76001db 100644 --- a/Examples/test-suite/java/doxygen_parsing_runme.java +++ b/Examples/test-suite/java/doxygen_parsing_runme.java @@ -132,6 +132,14 @@ public class doxygen_parsing_runme { wantedComments.put("doxygen_parsing.doxygen_parsingConstants.CONSTANT_VALUE", "The constant comment \n" + ""); + wantedComments.put("doxygen_parsing.Foo1750.getA()", + ""); + wantedComments.put("doxygen_parsing.Foo1750.getB()", + ""); + wantedComments.put("doxygen_parsing.Foo1750.setA(int)", + ""); + wantedComments.put("doxygen_parsing.Foo1750.setB(int)", + ""); // and ask the parser to check comments for us System.exit(CommentParser.check(wantedComments)); diff --git a/Source/Doxygen/doxycommands.h b/Source/Doxygen/doxycommands.h index b5d65af65..939b56917 100644 --- a/Source/Doxygen/doxycommands.h +++ b/Source/Doxygen/doxycommands.h @@ -44,6 +44,8 @@ const int sectionIndicatorsSize = sizeof(sectionIndicators) / sizeof(*sectionInd const char *simpleCommands[] = { // the first line are escaped chars, except \~, which is a language ID command. "n", "$", "@", "\\", "&", "~", "<", ">", "#", "%", "\"", ".", "::", + // Member groups, which we currently ignore. + "{", "}", "endcond", "callgraph", "callergraph", "showinitializer", "hideinitializer", "internal", "nosubgrouping", "public", "publicsection", "private", "privatesection", diff --git a/Source/Doxygen/doxyparser.h b/Source/Doxygen/doxyparser.h index e692729ce..7a7d5c4f2 100644 --- a/Source/Doxygen/doxyparser.h +++ b/Source/Doxygen/doxyparser.h @@ -238,7 +238,7 @@ private: * Method for Adding a Simple Command * Format: @command * Plain commands, such as newline etc, they contain no other data - * \n \\ \@ \& \$ \# \< \> \% + * \n \\ \@ \& \$ \# \< \> \% \{ \} */ void addSimpleCommand(const std::string &theCommand, DoxygenEntityList &doxyList); /* diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx index c97bc4610..cd87984dc 100644 --- a/Source/Modules/python.cxx +++ b/Source/Modules/python.cxx @@ -5053,8 +5053,11 @@ public: Printv(f_shadow, tab4, symname, variable_annotation, " = property(", module, ".", getname, NIL); if (assignable) Printv(f_shadow, ", ", module, ".", setname, NIL); - if (have_docstring(n)) - Printv(f_shadow, ", doc=", docstring(n, AUTODOC_VAR, tab4), NIL); + if (have_docstring(n)) { + String *s = docstring(n, AUTODOC_VAR, tab4); + if (Len(s)) + Printv(f_shadow, ", doc=", s, NIL); + } Printv(f_shadow, ")\n", NIL); Delete(variable_annotation); Delete(mname); @@ -5121,8 +5124,11 @@ public: Printv(f_shadow, tab4, symname, " = property(", module, ".", getname, NIL); if (assignable) Printv(f_shadow, ", ", module, ".", setname, NIL); - if (have_docstring(n)) - Printv(f_shadow, ", doc=", docstring(n, AUTODOC_VAR, tab4), NIL); + if (have_docstring(n)) { + String *s = docstring(n, AUTODOC_VAR, tab4); + if (Len(s)) + Printv(f_shadow, ", doc=", s, NIL); + } Printv(f_shadow, ")\n", NIL); } String *getter = Getattr(n, "pybuiltin:getter");