[clang-tidy] Allow /**/ comments on #endifs when checking header guards.
Turning block comments into line comments just creates unecessary churn. llvm-svn: 216072
This commit is contained in:
parent
061beab673
commit
208faaaa29
|
@ -164,7 +164,8 @@ public:
|
|||
size_t EndIfLen = std::strcspn(EndIfData, "\r\n");
|
||||
|
||||
StringRef EndIfStr(EndIfData, EndIfLen);
|
||||
if (EndIf.isValid() && !EndIfStr.endswith("// " + HeaderGuard.str())) {
|
||||
if (EndIf.isValid() && !EndIfStr.endswith("// " + HeaderGuard.str()) &&
|
||||
!EndIfStr.endswith("/* " + HeaderGuard.str() + " */")) {
|
||||
std::string Correct = "endif // " + HeaderGuard.str();
|
||||
Check->diag(EndIf, "#endif for a header guard should reference the "
|
||||
"guard macro in a comment")
|
||||
|
|
|
@ -93,6 +93,18 @@ static std::string runHeaderGuardCheck(StringRef Code, const Twine &Filename) {
|
|||
Code, /*Errors=*/nullptr, Filename, std::string("-xc++-header"));
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct WithEndifComment : public LLVMHeaderGuardCheck {
|
||||
bool shouldSuggestEndifComment(StringRef Filename) override { return true; }
|
||||
};
|
||||
} // namespace
|
||||
|
||||
static std::string runHeaderGuardCheckWithEndif(StringRef Code,
|
||||
const Twine &Filename) {
|
||||
return test::runCheckOnCode<WithEndifComment>(
|
||||
Code, /*Errors=*/nullptr, Filename, std::string("-xc++-header"));
|
||||
}
|
||||
|
||||
TEST(LLVMHeaderGuardCheckTest, FixHeaderGuards) {
|
||||
EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif\n",
|
||||
runHeaderGuardCheck("#ifndef FOO\n#define FOO\n#endif\n",
|
||||
|
@ -126,6 +138,24 @@ TEST(LLVMHeaderGuardCheckTest, FixHeaderGuards) {
|
|||
runHeaderGuardCheck(
|
||||
"int foo;\n#ifndef FOOLOLO\n#define FOOLOLO\n#endif\n",
|
||||
"include/clang/bar.h"));
|
||||
|
||||
EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif "
|
||||
" // LLVM_ADT_FOO_H\n",
|
||||
runHeaderGuardCheckWithEndif("#ifndef FOO\n#define FOO\n#endif\n",
|
||||
"include/llvm/ADT/foo.h"));
|
||||
|
||||
EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif "
|
||||
" // LLVM_ADT_FOO_H\n",
|
||||
runHeaderGuardCheckWithEndif("#ifndef LLVM_ADT_FOO_H\n#define "
|
||||
"LLVM_ADT_FOO_H\n#endif // LLVM_H\n",
|
||||
"include/llvm/ADT/foo.h"));
|
||||
|
||||
EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif"
|
||||
" /* LLVM_ADT_FOO_H */\n",
|
||||
runHeaderGuardCheckWithEndif("#ifndef LLVM_ADT_FOO_H\n#define "
|
||||
"LLVM_ADT_FOO_H\n"
|
||||
"#endif /* LLVM_ADT_FOO_H */\n",
|
||||
"include/llvm/ADT/foo.h"));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue