diff --git a/Examples/test-suite/doxygen_misc_constructs.i b/Examples/test-suite/doxygen_misc_constructs.i index 9426b5909..78c72fe6d 100644 --- a/Examples/test-suite/doxygen_misc_constructs.i +++ b/Examples/test-suite/doxygen_misc_constructs.i @@ -102,6 +102,20 @@ }; + /** + An example of a list in a documentation comment. + + - The first item of the list. + - The second list item, on + several indented lines, + showing that the indentation + is preserved. + - And the final list item after it. + + And this is not a list item any more. + */ + void showList() { } + #include "doxygen_misc_constructs.h" %} diff --git a/Examples/test-suite/java/doxygen_misc_constructs_runme.java b/Examples/test-suite/java/doxygen_misc_constructs_runme.java index ba0f2b265..7c799412e 100644 --- a/Examples/test-suite/java/doxygen_misc_constructs_runme.java +++ b/Examples/test-suite/java/doxygen_misc_constructs_runme.java @@ -117,6 +117,18 @@ public class doxygen_misc_constructs_runme { wantedComments.put("doxygen_misc_constructs.ClassWithNestedEnum.ENested.THREE", " desc of three\n"); + wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.showList()", +" An example of a list in a documentation comment.
\n" + +"
\n" + +" - The first item of the list.
\n" + +" - The second list item, on
\n" + +" several indented lines,
\n" + +" showing that the indentation
\n" + +" is preserved.
\n" + +" - And the final list item after it.
\n" + +"
\n" + +" And this is not a list item any more.\n" + + ""); wantedComments.put("doxygen_misc_constructs.doxygen_misc_constructs.isNoSpaceValidA()", " This comment without space after '*' is valid in Doxygen.\n" + "\n" + @@ -182,4 +194,4 @@ public class doxygen_misc_constructs_runme { // and ask the parser to check comments for us System.exit(parser.check(wantedComments)); } -} \ No newline at end of file +} diff --git a/Examples/test-suite/python/doxygen_misc_constructs_runme.py b/Examples/test-suite/python/doxygen_misc_constructs_runme.py index 183fc870f..742c19b16 100644 --- a/Examples/test-suite/python/doxygen_misc_constructs_runme.py +++ b/Examples/test-suite/python/doxygen_misc_constructs_runme.py @@ -64,6 +64,21 @@ commentVerifier.check(doxygen_misc_constructs.ClassWithNestedEnum.__doc__, """ ) +commentVerifier.check(doxygen_misc_constructs.showList.__doc__, + r""" + An example of a list in a documentation comment. + + - The first item of the list. + - The second list item, on + several indented lines, + showing that the indentation + is preserved. + - And the final list item after it. + + And this is not a list item any more. + """ +) + commentVerifier.check(doxygen_misc_constructs.isNoSpaceValidA.__doc__, r""" This comment without space after '*' is valid in Doxygen. diff --git a/Source/DoxygenTranslator/src/DoxygenParser.cpp b/Source/DoxygenTranslator/src/DoxygenParser.cpp index 22f391b36..8523b51f4 100644 --- a/Source/DoxygenTranslator/src/DoxygenParser.cpp +++ b/Source/DoxygenTranslator/src/DoxygenParser.cpp @@ -1338,19 +1338,23 @@ void DoxygenParser::tokenizeDoxygenComment(const std::string &doxygenComment, // line[pos] may be ' \t' or start of word, it there was no '*', '/' or '!' // at beginning of the line. Make sure it points to start of the first word // in the line. - size_t firstWordPos = line.find_first_not_of(" \t", pos); - if (firstWordPos == string::npos) { - m_tokenList.push_back(Token(END_LINE, "\n")); - continue; - } + if (isStartOfCommentLineCharFound) { + size_t firstWordPos = line.find_first_not_of(" \t", pos); + if (firstWordPos == string::npos) { + m_tokenList.push_back(Token(END_LINE, "\n")); + continue; + } - if (isStartOfCommentLineCharFound && firstWordPos > pos) { - m_tokenList.push_back( - Token(PLAINSTRING, line.substr(pos, firstWordPos - pos))); + if (firstWordPos > pos) { + m_tokenList.push_back( + Token(PLAINSTRING, line.substr(pos, firstWordPos - pos))); + pos = firstWordPos; + } + } else { + m_tokenList.push_back( + Token(PLAINSTRING, line.substr(0, pos))); } - pos = firstWordPos; - while (pos != string::npos) { // find the end of the word size_t doxyCmdOrHtmlTagPos = line.find_first_of("\\@<>&\" \t", pos);