From 47d60ae89a853997b8af3690531b3b9ee60ed628 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 11 Mar 2013 15:01:10 +0100 Subject: [PATCH] C++: Consider '^//[/!][^\n]*' as doxygen comment Now everything following '///' or '//!' is a doxygen comment. This simplification fixes also the bug ('\n' was considered as part of the doxygen comment and led to strange highlighting). Task-number: QTCREATORBUG-8921 Change-Id: I6dae3b80ec11400f2f623897257782a80860a7f3 Reviewed-by: Eike Ziller Reviewed-by: Erik Verbruggen --- src/libs/3rdparty/cplusplus/Lexer.cpp | 6 +----- tests/auto/cplusplus/lexer/tst_lexer.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/libs/3rdparty/cplusplus/Lexer.cpp b/src/libs/3rdparty/cplusplus/Lexer.cpp index 7e2710f8d28..21546557495 100644 --- a/src/libs/3rdparty/cplusplus/Lexer.cpp +++ b/src/libs/3rdparty/cplusplus/Lexer.cpp @@ -368,11 +368,7 @@ void Lexer::scan_helper(Token *tok) if (_yychar == '/' || _yychar == '!') { yyinp(); - - if (_yychar == '<' || _yychar != '/') { - yyinp(); - doxy = true; - } + doxy = true; } while (_yychar && _yychar != '\n') diff --git a/tests/auto/cplusplus/lexer/tst_lexer.cpp b/tests/auto/cplusplus/lexer/tst_lexer.cpp index 993cfe9782c..f71a40631c4 100644 --- a/tests/auto/cplusplus/lexer/tst_lexer.cpp +++ b/tests/auto/cplusplus/lexer/tst_lexer.cpp @@ -65,7 +65,7 @@ void tst_SimpleLexer::doxygen_comments() Token expectedToken; // Create a Token in order to spell the token kind expectedToken.f.kind = expectedTokenKind; // qDebug("Comparing (i=%d): \"%s\" \"%s\"", i, token.spell(), expectedToken.spell()); - QCOMPARE(token.spell(), expectedToken.spell()); + QCOMPARE(token.kind(), expectedTokenKind); } QVERIFY2(i == expectedTokenKindList.size(), "Less tokens than expected."); } @@ -83,7 +83,7 @@ void tst_SimpleLexer::doxygen_comments_data() QTest::newRow(source) << source << expectedTokenKindList; source = "//// comment"; - expectedTokenKindList = QList() << T_CPP_COMMENT; + expectedTokenKindList = QList() << T_CPP_DOXY_COMMENT; QTest::newRow(source) << source << expectedTokenKindList; source = "/// comment"; @@ -105,6 +105,13 @@ void tst_SimpleLexer::doxygen_comments_data() source = "///\n"; expectedTokenKindList = QList() << T_CPP_DOXY_COMMENT; QTest::newRow(source) << source << expectedTokenKindList; + + source = "///\n" + "int i;"; + expectedTokenKindList = QList() + << T_CPP_DOXY_COMMENT + << T_INT << T_IDENTIFIER << T_SEMICOLON; + QTest::newRow(source) << source << expectedTokenKindList; } QTEST_APPLESS_MAIN(tst_SimpleLexer)