[clang-format] Fix namespace end comments fixer with anonymous namespaces.

Previously, a strange trailing comment was produced:
```
namespace out { namespace {
}} // namespace out::
```
(mind the "out::").

Reviewed By: MyDeveloperDay, owenpan

Differential Revision: https://reviews.llvm.org/D117289
This commit is contained in:
Marek Kurdej 2022-01-14 11:37:04 +01:00
parent 1ef9bfa013
commit 717cd16e85
2 changed files with 16 additions and 1 deletions

View File

@ -261,7 +261,8 @@ std::pair<tooling::Replacements, unsigned> NamespaceEndCommentsFixer::analyze(
updateEndComment(EndCommentPrevTok, std::string(), SourceMgr, &Fixes);
}
++CompactedNamespacesCount;
AllNamespaceNames = "::" + NamespaceName + AllNamespaceNames;
if (!NamespaceName.empty())
AllNamespaceNames = "::" + NamespaceName + AllNamespaceNames;
continue;
}
NamespaceName += AllNamespaceNames;

View File

@ -256,6 +256,15 @@ TEST_F(NamespaceEndCommentsFixerTest, AddsEndComment) {
"int j;\n"
"};}",
CompactNamespacesStyle));
EXPECT_EQ("namespace out { namespace {\n"
"int i;\n"
"int j;\n"
"}}// namespace out",
fixNamespaceEndComments("namespace out { namespace {\n"
"int i;\n"
"int j;\n"
"}}",
CompactNamespacesStyle));
// Adds an end comment after a semicolon.
EXPECT_EQ("namespace {\n"
@ -609,6 +618,11 @@ TEST_F(NamespaceEndCommentsFixerTest, UpdatesInvalidEndLineComment) {
"}// banamespace in\n"
"} // namespace out",
CompactNamespacesStyle));
EXPECT_EQ("namespace out { namespace {\n"
"}} // namespace out",
fixNamespaceEndComments("namespace out { namespace {\n"
"}} // namespace out::",
CompactNamespacesStyle));
}
TEST_F(NamespaceEndCommentsFixerTest, UpdatesInvalidMacroEndLineComment) {