Author: Kadir Cetinkaya Date: 2024-06-18T09:15:30+02:00 New Revision: ae0813f2d7222c4eab7cd3e6099d49f50318d1d5
URL: https://github.com/llvm/llvm-project/commit/ae0813f2d7222c4eab7cd3e6099d49f50318d1d5 DIFF: https://github.com/llvm/llvm-project/commit/ae0813f2d7222c4eab7cd3e6099d49f50318d1d5.diff LOG: Revert "[clang-tidy] fix false positives for the functions with the same name as standard library functions in misc-include-cleaner (#94923)" This reverts commit 1bae10879d9183c5edfb709c36b55086ebc772f0. Also add some test cases to prevent further regressions. Added: Modified: clang-tools-extra/docs/ReleaseNotes.rst clang-tools-extra/include-cleaner/lib/LocateSymbol.cpp clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp clang-tools-extra/test/clang-tidy/checkers/misc/include-cleaner.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 3bdd735f7dcf7..16fdc20eafd62 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -341,10 +341,6 @@ Changes in existing checks <clang-tidy/checks/misc/header-include-cycle>` check by avoiding crash for self include cycles. -- Improved :doc:`misc-include-cleaner - <clang-tidy/checks/misc/include-cleaner>` check by avoiding false positives for - the functions with the same name as standard library functions. - - Improved :doc:`misc-unused-using-decls <clang-tidy/checks/misc/unused-using-decls>` check by replacing the local option `HeaderFileExtensions` by the global option of the same name. diff --git a/clang-tools-extra/include-cleaner/lib/LocateSymbol.cpp b/clang-tools-extra/include-cleaner/lib/LocateSymbol.cpp index 9148d36a5038f..78e783a62eb27 100644 --- a/clang-tools-extra/include-cleaner/lib/LocateSymbol.cpp +++ b/clang-tools-extra/include-cleaner/lib/LocateSymbol.cpp @@ -14,7 +14,6 @@ #include "clang/AST/DeclTemplate.h" #include "clang/Tooling/Inclusions/StandardLibrary.h" #include "llvm/Support/Casting.h" -#include "llvm/Support/raw_ostream.h" #include <utility> #include <vector> @@ -41,11 +40,8 @@ Hints declHints(const Decl *D) { std::vector<Hinted<SymbolLocation>> locateDecl(const Decl &D) { std::vector<Hinted<SymbolLocation>> Result; // FIXME: Should we also provide physical locations? - if (auto SS = tooling::stdlib::Recognizer()(&D)) { - Result.push_back({*SS, Hints::CompleteSymbol}); - if (!D.hasBody()) - return Result; - } + if (auto SS = tooling::stdlib::Recognizer()(&D)) + return {{*SS, Hints::CompleteSymbol}}; // FIXME: Signal foreign decls, e.g. a forward declaration not owned by a // library. Some useful signals could be derived by checking the DeclContext. // Most incidental forward decls look like: diff --git a/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp b/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp index fdcbf25fd628c..c5fc465ced7a7 100644 --- a/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp +++ b/clang-tools-extra/include-cleaner/unittests/FindHeadersTest.cpp @@ -619,26 +619,23 @@ TEST_F(HeadersForSymbolTest, AmbiguousStdSymbolsUsingShadow) { TEST_F(HeadersForSymbolTest, StandardHeaders) { - Inputs.Code = "void assert();"; + Inputs.Code = R"cpp( + #include "stdlib_internal.h" + void assert(); + void foo() { assert(); } + )cpp"; + Inputs.ExtraFiles["stdlib_internal.h"] = "void assert();"; buildAST(); EXPECT_THAT( headersFor("assert"), // Respect the ordering from the stdlib mapping. + // FIXME: Report physical locations too, stdlib_internal.h and main-file + // should also be candidates. But they should be down-ranked compared to + // stdlib providers. UnorderedElementsAre(tooling::stdlib::Header::named("<cassert>"), tooling::stdlib::Header::named("<assert.h>"))); } -TEST_F(HeadersForSymbolTest, NonStandardHeaders) { - Inputs.Code = "void assert() {}"; - buildAST(); - EXPECT_THAT( - headersFor("assert"), - // Respect the ordering from the stdlib mapping. - UnorderedElementsAre(physicalHeader("input.mm"), - tooling::stdlib::Header::named("<cassert>"), - tooling::stdlib::Header::named("<assert.h>"))); -} - TEST_F(HeadersForSymbolTest, ExporterNoNameMatch) { Inputs.Code = R"cpp( #include "exporter/foo.h" diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc/include-cleaner.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc/include-cleaner.cpp index d5ea96b00254c..e10ac3f46e2e9 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/misc/include-cleaner.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/misc/include-cleaner.cpp @@ -15,11 +15,3 @@ std::string HelloString; // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: no header providing "std::string" is directly included [misc-include-cleaner] int FooBarResult = foobar(); // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: no header providing "foobar" is directly included [misc-include-cleaner] - -namespace valid { - -namespace gh93335 { -void log2() {} -} // namespace gh93335 - -} // namespace valid _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits