Skip to content

Commit

Permalink
[clang-format] Handle NamespaceMacro string arg for FixNamespaceComments
Browse files Browse the repository at this point in the history
Fixes #63795.

Differential Revision: https://reviews.llvm.org/D157568
  • Loading branch information
owenca committed Aug 16, 2023
1 parent c9d0d15 commit 063c42e
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 43 deletions.
2 changes: 1 addition & 1 deletion clang/lib/Format/NamespaceEndCommentsFixer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ bool validEndComment(const FormatToken *RBraceTok, StringRef NamespaceName,
llvm::Regex::IgnoreCase);
static const llvm::Regex NamespaceMacroCommentPattern =
llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *"
"([a-zA-Z0-9_]+)\\(([a-zA-Z0-9:_]*)\\)\\.? *(\\*/)?$",
"([a-zA-Z0-9_]+)\\(([a-zA-Z0-9:_]*|\".+\")\\)\\.? *(\\*/)?$",
llvm::Regex::IgnoreCase);

SmallVector<StringRef, 8> Groups;
Expand Down
82 changes: 40 additions & 42 deletions clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,18 @@ class NamespaceEndCommentsFixerTest : public ::testing::Test {
Code,
/*Ranges=*/{1, tooling::Range(0, Code.size())}, Style);
}

bool isFormatted(StringRef Code, const std::vector<tooling::Range> &Ranges,
const FormatStyle &Style = getLLVMStyle()) const {
return clang::format::fixNamespaceEndComments(Style, Code, Ranges,
"<stdin>")
.empty();
}

bool isFormatted(StringRef Code,
const FormatStyle &Style = getLLVMStyle()) const {
return isFormatted(Code, {1, tooling::Range(0, Code.size())}, Style);
}
};

TEST_F(NamespaceEndCommentsFixerTest, AddsEndComment) {
Expand Down Expand Up @@ -688,48 +700,34 @@ TEST_F(NamespaceEndCommentsFixerTest, KeepsValidMacroEndComment) {
FormatStyle Style = getLLVMStyle();
Style.NamespaceMacros.push_back("TESTSUITE");

EXPECT_EQ("TESTSUITE() {\n"
"int i;\n"
"} // end anonymous TESTSUITE()",
fixNamespaceEndComments("TESTSUITE() {\n"
"int i;\n"
"} // end anonymous TESTSUITE()",
Style));
EXPECT_EQ("TESTSUITE(A) {\n"
"int i;\n"
"} /* end of TESTSUITE(A) */",
fixNamespaceEndComments("TESTSUITE(A) {\n"
"int i;\n"
"} /* end of TESTSUITE(A) */",
Style));
EXPECT_EQ("TESTSUITE(A) {\n"
"int i;\n"
"} // TESTSUITE(A)",
fixNamespaceEndComments("TESTSUITE(A) {\n"
"int i;\n"
"} // TESTSUITE(A)",
Style));
EXPECT_EQ("TESTSUITE(A::B) {\n"
"int i;\n"
"} // end TESTSUITE(A::B)",
fixNamespaceEndComments("TESTSUITE(A::B) {\n"
"int i;\n"
"} // end TESTSUITE(A::B)",
Style));
EXPECT_EQ("TESTSUITE(A) {\n"
"int i;\n"
"}; // end TESTSUITE(A)",
fixNamespaceEndComments("TESTSUITE(A) {\n"
"int i;\n"
"}; // end TESTSUITE(A)",
Style));
EXPECT_EQ("TESTSUITE() {\n"
"int i;\n"
"}; /* unnamed TESTSUITE() */",
fixNamespaceEndComments("TESTSUITE() {\n"
"int i;\n"
"}; /* unnamed TESTSUITE() */",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE() {\n"
"int i;\n"
"} // end anonymous TESTSUITE()",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE(A) {\n"
"int i;\n"
"} /* end of TESTSUITE(A) */",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE(A) {\n"
"int i;\n"
"} // TESTSUITE(A)",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE(A::B) {\n"
"int i;\n"
"} // end TESTSUITE(A::B)",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE(A) {\n"
"int i;\n"
"}; // end TESTSUITE(A)",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE() {\n"
"int i;\n"
"}; /* unnamed TESTSUITE() */",
Style));
EXPECT_TRUE(isFormatted("TESTSUITE(\"foo\") {\n"
"int i;\n"
"} // TESTSUITE(\"foo\")",
Style));
}

TEST_F(NamespaceEndCommentsFixerTest, UpdatesInvalidEndLineComment) {
Expand Down

0 comments on commit 063c42e

Please sign in to comment.