curdeius created this revision. curdeius added reviewers: aaron.ballman, hokein, bkramer, salman-javed-nz, alexfh. Herald added subscribers: carlosgalvezp, xazax.hun. curdeius requested review of this revision. Herald added a project: clang-tools-extra. Herald added a subscriber: cfe-commits.
Fixes http://llvm.org/PR52682. The previous fix (https://reviews.llvm.org/rGb4f6f1c) escaped backslashes, but didn't cover colons. So the check, for a file called e.g. "C:\test\test.h" would suggest the guard `C:_TEST_TEST_H` being an invalid name due to the presence of the colon. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D115715 Files: clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp Index: clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp =================================================================== --- clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp +++ clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp @@ -267,6 +267,15 @@ runHeaderGuardCheck( "", "\\\\?\\C:\\llvm-project\\clang-tools-extra\\clangd\\foo.h", StringRef("header is missing header guard"))); + + EXPECT_EQ("#ifndef C__TEST_FOO_H\n" + "#define C__TEST_FOO_H\n" + "\n" + "\n" + "#endif\n", + runHeaderGuardCheck("", "c:\\test\\foo.h", + StringRef("header is missing header guard"))); + #endif } Index: clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp +++ clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp @@ -54,6 +54,7 @@ std::replace(Guard.begin(), Guard.end(), '/', '_'); std::replace(Guard.begin(), Guard.end(), '.', '_'); std::replace(Guard.begin(), Guard.end(), '-', '_'); + std::replace(Guard.begin(), Guard.end(), ':', '_'); // The prevalent style in clang is LLVM_CLANG_FOO_BAR_H if (StringRef(Guard).startswith("clang"))
Index: clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp =================================================================== --- clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp +++ clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp @@ -267,6 +267,15 @@ runHeaderGuardCheck( "", "\\\\?\\C:\\llvm-project\\clang-tools-extra\\clangd\\foo.h", StringRef("header is missing header guard"))); + + EXPECT_EQ("#ifndef C__TEST_FOO_H\n" + "#define C__TEST_FOO_H\n" + "\n" + "\n" + "#endif\n", + runHeaderGuardCheck("", "c:\\test\\foo.h", + StringRef("header is missing header guard"))); + #endif } Index: clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp +++ clang-tools-extra/clang-tidy/llvm/HeaderGuardCheck.cpp @@ -54,6 +54,7 @@ std::replace(Guard.begin(), Guard.end(), '/', '_'); std::replace(Guard.begin(), Guard.end(), '.', '_'); std::replace(Guard.begin(), Guard.end(), '-', '_'); + std::replace(Guard.begin(), Guard.end(), ':', '_'); // The prevalent style in clang is LLVM_CLANG_FOO_BAR_H if (StringRef(Guard).startswith("clang"))
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits