diff --git a/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.cpp b/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.cpp index e8ca9f67abd..5af48386bd2 100644 --- a/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.cpp +++ b/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.cpp @@ -25,6 +25,8 @@ #include "clangcompletionchunkstotextconverter.h" +#include + #include #include @@ -70,6 +72,11 @@ void CompletionChunksToTextConverter::setAddSpaces(bool addSpaces) m_addSpaces = addSpaces; } +void CompletionChunksToTextConverter::setHonorVerticalSpace(bool honor) +{ + m_honorVerticalSpace = honor; +} + void CompletionChunksToTextConverter::setAddExtraVerticalSpaceBetweenBraces( bool addExtraVerticalSpaceBetweenBraces) { @@ -145,6 +152,8 @@ QString CompletionChunksToTextConverter::convertToName( { CompletionChunksToTextConverter converter; + converter.setHonorVerticalSpace(false); + converter.parseChunks(codeCompletionChunks); return converter.text(); @@ -183,6 +192,10 @@ void CompletionChunksToTextConverter::parse( parsePlaceHolder(codeCompletionChunk); break; case CodeCompletionChunk::LeftParen: parseLeftParen(codeCompletionChunk); break; case CodeCompletionChunk::LeftBrace: parseLeftBrace(codeCompletionChunk); break; + case CodeCompletionChunk::VerticalSpace: + if (!m_honorVerticalSpace) + break; + Q_FALLTHROUGH(); default: parseText(codeCompletionChunk.text); break; } } diff --git a/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.h b/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.h index 27eccbcf169..88654ed3fd9 100644 --- a/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.h +++ b/src/plugins/clangcodemodel/clangcompletionchunkstotextconverter.h @@ -50,6 +50,7 @@ public: void setAddPlaceHolderPositions(bool addPlaceHolderPositions); void setAddResultType(bool addResultType); void setAddSpaces(bool addSpaces); + void setHonorVerticalSpace(bool honor); void setAddExtraVerticalSpaceBetweenBraces(bool addExtraVerticalSpaceBetweenBraces); void setEmphasizeOptional(bool emphasizeOptional); // Only for Html format void setAddOptional(bool addOptional); @@ -103,6 +104,7 @@ private: bool m_addPlaceHolderPositions = false; bool m_addResultType = false; bool m_addSpaces = false; + bool m_honorVerticalSpace = true; bool m_addExtraVerticalSpaceBetweenBraces = false; bool m_emphasizeOptional = false; bool m_addOptional = false; diff --git a/tests/unit/unittest/completionchunkstotextconverter-test.cpp b/tests/unit/unittest/completionchunkstotextconverter-test.cpp index be911c7a765..e54161f8363 100644 --- a/tests/unit/unittest/completionchunkstotextconverter-test.cpp +++ b/tests/unit/unittest/completionchunkstotextconverter-test.cpp @@ -256,7 +256,7 @@ TEST_F(CompletionChunksToTextConverter, Enumeration) ASSERT_THAT(converter.text(), QStringLiteral("Class")); } -TEST_F(CompletionChunksToTextConverter, Switch) +TEST_F(CompletionChunksToTextConverter, SwitchAsKeyword) { CodeCompletionChunks completionChunks({switchName, leftParen, @@ -273,6 +273,22 @@ TEST_F(CompletionChunksToTextConverter, Switch) ASSERT_THAT(converter.placeholderPositions().at(0), 8); } +TEST_F(CompletionChunksToTextConverter, SwitchAsName) +{ + CodeCompletionChunks completionChunks({switchName, + leftParen, + condition, + rightParen, + leftBrace, + verticalSpace, + rightBrace}); + + const QString text = ClangCodeModel::Internal::CompletionChunksToTextConverter::convertToName( + completionChunks); + + ASSERT_THAT(text, QStringLiteral("switch(){}")); +} + TEST_F(CompletionChunksToTextConverter, For) { CodeCompletionChunks completionChunks({forName,