[clang-tools-extra] fd2d5ad - [include-cleaner] Make sure exports of stdlib also works for physical files (#72246)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 17 01:11:26 PST 2023
Author: kadir çetinkaya
Date: 2023-11-17T10:11:21+01:00
New Revision: fd2d5add437b2b324492b1bc29374699fe7b614b
URL: https://github.com/llvm/llvm-project/commit/fd2d5add437b2b324492b1bc29374699fe7b614b
DIFF: https://github.com/llvm/llvm-project/commit/fd2d5add437b2b324492b1bc29374699fe7b614b.diff
LOG: [include-cleaner] Make sure exports of stdlib also works for physical files (#72246)
This was creating discrepancy in cases where we might have a physical
file entry (e.g. because we followed a source location from a stdlib
file) and tried to find its exporters.
Added:
Modified:
clang-tools-extra/include-cleaner/lib/Record.cpp
clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/include-cleaner/lib/Record.cpp b/clang-tools-extra/include-cleaner/lib/Record.cpp
index 7a8e10a9c675496..6e00ff93a7fe2fa 100644
--- a/clang-tools-extra/include-cleaner/lib/Record.cpp
+++ b/clang-tools-extra/include-cleaner/lib/Record.cpp
@@ -240,20 +240,10 @@ class PragmaIncludes::RecordPragma : public PPCallbacks, public CommentHandler {
// Make sure current include is covered by the export pragma.
if ((Top.Block && HashLine > Top.SeenAtLine) ||
Top.SeenAtLine == HashLine) {
- if (IncludedHeader) {
- switch (IncludedHeader->kind()) {
- case Header::Physical:
- Out->IWYUExportBy[IncludedHeader->physical().getUniqueID()]
- .push_back(Top.Path);
- break;
- case Header::Standard:
- Out->StdIWYUExportBy[IncludedHeader->standard()].push_back(Top.Path);
- break;
- case Header::Verbatim:
- assert(false && "unexpected Verbatim header");
- break;
- }
- }
+ if (IncludedFile)
+ Out->IWYUExportBy[IncludedFile->getUniqueID()].push_back(Top.Path);
+ if (IncludedHeader && IncludedHeader->kind() == Header::Standard)
+ Out->StdIWYUExportBy[IncludedHeader->standard()].push_back(Top.Path);
// main-file #include with export pragma should never be removed.
if (Top.SeenAtFile == SM.getMainFileID() && IncludedFile)
Out->ShouldKeep.insert(IncludedFile->getUniqueID());
diff --git a/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp b/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
index 36850731d514539..dfefa66887b0f24 100644
--- a/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
+++ b/clang-tools-extra/include-cleaner/unittests/RecordTest.cpp
@@ -452,6 +452,8 @@ TEST_F(PragmaIncludeTest, IWYUExportForStandardHeaders) {
auto &FM = Processed.fileManager();
EXPECT_THAT(PI.getExporters(*tooling::stdlib::Header::named("<string>"), FM),
testing::UnorderedElementsAre(FileNamed("export.h")));
+ EXPECT_THAT(PI.getExporters(llvm::cantFail(FM.getFileRef("string")), FM),
+ testing::UnorderedElementsAre(FileNamed("export.h")));
}
TEST_F(PragmaIncludeTest, IWYUExportBlock) {
More information about the cfe-commits
mailing list