From afed126ba1bb32d43c0a26d6ed58dcca87f6522a Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Mon, 24 Oct 2022 16:39:20 +0200 Subject: [PATCH] ClangFormat: Fix wrong comment indentation Fixes: QTCREATORBUG-25539 Change-Id: Ifecc4bc2c0984319d858720d5bcd1788a9008e90 Reviewed-by: Christian Kandeler Reviewed-by: --- .../clangformat/clangformatbaseindenter.cpp | 4 ++-- .../clangformat/tests/clangformat-test.cpp | 20 +++++++++++++++++++ .../clangformat/tests/clangformat-test.h | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp index cda7b54d5ef..7c83c8e43b2 100644 --- a/src/plugins/clangformat/clangformatbaseindenter.cpp +++ b/src/plugins/clangformat/clangformatbaseindenter.cpp @@ -250,7 +250,7 @@ QByteArray dummyTextForContext(CharacterContext context, bool closingBraceBlock) case CharacterContext::IfOrElseWithoutScope: return ";"; case CharacterContext::NewStatementOrContinuation: - return "/**/"; + return "/*//*/"; case CharacterContext::Unknown: default: QTC_ASSERT(false, return "";); @@ -302,7 +302,7 @@ int forceIndentWithExtraText(QByteArray &buffer, } // A comment at the end of the line appears to prevent clang-format from removing line breaks. - if (dummyText == "/**/" || dummyText.isEmpty()) { + if (dummyText == "/*//*/" || dummyText.isEmpty()) { if (block.previous().isValid()) { const int prevEndOffset = Utils::Text::utf8NthLineOffset(block.document(), buffer, block.blockNumber()) + block.previous().text().length(); diff --git a/src/plugins/clangformat/tests/clangformat-test.cpp b/src/plugins/clangformat/tests/clangformat-test.cpp index 74107a40e78..161c20406c8 100644 --- a/src/plugins/clangformat/tests/clangformat-test.cpp +++ b/src/plugins/clangformat/tests/clangformat-test.cpp @@ -704,4 +704,24 @@ void ClangFormatTest::testIndentFunctionArgumentOnNewLine() })); } +void ClangFormatTest::testIndentCommentOnNewLine() +{ + insertLines( + {"/*!", + " \\qmlproperty double Type::property", + " ", + " \\brief The property of Type.", + "*/" + }); + m_indenter->indent(*m_cursor, QChar::Null, TextEditor::TabSettings()); + QCOMPARE(documentLines(), + (std::vector{ + "/*!", + " \\qmlproperty double Type::property", + " ", + " \\brief The property of Type.", + "*/" + })); +} + } // namespace ClangFormat::Internal diff --git a/src/plugins/clangformat/tests/clangformat-test.h b/src/plugins/clangformat/tests/clangformat-test.h index 0cb909c0344..a9c146ef8aa 100644 --- a/src/plugins/clangformat/tests/clangformat-test.h +++ b/src/plugins/clangformat/tests/clangformat-test.h @@ -90,6 +90,7 @@ private slots: void testClassIndentStructure(); void testIndentInitializeVector(); void testIndentFunctionArgumentOnNewLine(); + void testIndentCommentOnNewLine(); private: void insertLines(const std::vector &lines);