hokein created this revision. hokein added a reviewer: kadircet. Herald added a subscriber: arphaman. Herald added a project: All. hokein requested review of this revision. Herald added subscribers: MaskRay, ilya-biryukov. Herald added a project: clang-tools-extra.
see the issue https://github.com/llvm/llvm-project/issues/64191 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D156650 Files: clang-tools-extra/clangd/IncludeCleaner.cpp clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp +++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp @@ -76,6 +76,8 @@ auto TU = TestTU::withCode(R"cpp( #include <list> #include <queue> + #include <vector> // IWYU pragma: keep + #include <string> // IWYU pragma: export std::list<int> x; )cpp"); // Layout of std library impl is not relevant. @@ -84,10 +86,13 @@ namespace std { template <typename> class list {}; template <typename> class queue {}; + template <typename> class vector {}; } )cpp"; TU.AdditionalFiles["list"] = "#include <bits>"; TU.AdditionalFiles["queue"] = "#include <bits>"; + TU.AdditionalFiles["vector"] = "#include <bits>"; + TU.AdditionalFiles["string"] = "#include <bits>"; TU.ExtraArgs = {"-isystem", testRoot()}; auto AST = TU.build(); IncludeCleanerFindings Findings = computeIncludeCleanerFindings(AST); Index: clang-tools-extra/clangd/IncludeCleaner.cpp =================================================================== --- clang-tools-extra/clangd/IncludeCleaner.cpp +++ clang-tools-extra/clangd/IncludeCleaner.cpp @@ -74,7 +74,8 @@ // System headers are likely to be standard library headers. // Until we have good support for umbrella headers, don't warn about them. if (Inc.Written.front() == '<') - return tooling::stdlib::Header::named(Inc.Written).has_value(); + return tooling::stdlib::Header::named(Inc.Written).has_value() && + !(PI && PI->shouldKeep(Inc.HashLine + 1)); assert(Inc.HeaderID); auto HID = static_cast<IncludeStructure::HeaderID>(*Inc.HeaderID); auto FE = AST.getSourceManager().getFileManager().getFileRef(
Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp +++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp @@ -76,6 +76,8 @@ auto TU = TestTU::withCode(R"cpp( #include <list> #include <queue> + #include <vector> // IWYU pragma: keep + #include <string> // IWYU pragma: export std::list<int> x; )cpp"); // Layout of std library impl is not relevant. @@ -84,10 +86,13 @@ namespace std { template <typename> class list {}; template <typename> class queue {}; + template <typename> class vector {}; } )cpp"; TU.AdditionalFiles["list"] = "#include <bits>"; TU.AdditionalFiles["queue"] = "#include <bits>"; + TU.AdditionalFiles["vector"] = "#include <bits>"; + TU.AdditionalFiles["string"] = "#include <bits>"; TU.ExtraArgs = {"-isystem", testRoot()}; auto AST = TU.build(); IncludeCleanerFindings Findings = computeIncludeCleanerFindings(AST); Index: clang-tools-extra/clangd/IncludeCleaner.cpp =================================================================== --- clang-tools-extra/clangd/IncludeCleaner.cpp +++ clang-tools-extra/clangd/IncludeCleaner.cpp @@ -74,7 +74,8 @@ // System headers are likely to be standard library headers. // Until we have good support for umbrella headers, don't warn about them. if (Inc.Written.front() == '<') - return tooling::stdlib::Header::named(Inc.Written).has_value(); + return tooling::stdlib::Header::named(Inc.Written).has_value() && + !(PI && PI->shouldKeep(Inc.HashLine + 1)); assert(Inc.HeaderID); auto HID = static_cast<IncludeStructure::HeaderID>(*Inc.HeaderID); auto FE = AST.getSourceManager().getFileManager().getFileRef(
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits