summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/modularize/ModularizeUtilities.cpp
diff options
context:
space:
mode:
authorJohn Thompson <John.Thompson.JTSoftware@gmail.com>2015-06-04 23:35:19 +0000
committerJohn Thompson <John.Thompson.JTSoftware@gmail.com>2015-06-04 23:35:19 +0000
commit96f5551b036590fed75490f4c2fe4c5af0224f9b (patch)
tree460309190fd01945eb776280eea66829923a55a3 /clang-tools-extra/modularize/ModularizeUtilities.cpp
parentbb2591f5efca96f110e4e7cd57f78bda9c652269 (diff)
downloadbcm5719-llvm-96f5551b036590fed75490f4c2fe4c5af0224f9b.tar.gz
bcm5719-llvm-96f5551b036590fed75490f4c2fe4c5af0224f9b.zip
Fixed modularize to warn about missing headers referenced in a module map.
llvm-svn: 239122
Diffstat (limited to 'clang-tools-extra/modularize/ModularizeUtilities.cpp')
-rw-r--r--clang-tools-extra/modularize/ModularizeUtilities.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/clang-tools-extra/modularize/ModularizeUtilities.cpp b/clang-tools-extra/modularize/ModularizeUtilities.cpp
index 62b6e911fbf..7594b6725cc 100644
--- a/clang-tools-extra/modularize/ModularizeUtilities.cpp
+++ b/clang-tools-extra/modularize/ModularizeUtilities.cpp
@@ -46,6 +46,7 @@ ModularizeUtilities::ModularizeUtilities(std::vector<std::string> &InputPaths,
: InputFilePaths(InputPaths),
HeaderPrefix(Prefix),
HasModuleMap(false),
+ MissingHeaderCount(0),
// Init clang stuff needed for loading the module map and preprocessing.
LangOpts(new LangOptions()), DiagIDs(new DiagnosticIDs()),
DiagnosticOpts(new DiagnosticOptions()),
@@ -234,6 +235,9 @@ std::error_code ModularizeUtilities::loadModuleMap(
// Do matching end call.
DC.EndSourceFile();
+ // Reset missing header count.
+ MissingHeaderCount = 0;
+
if (!collectModuleMapHeaders(ModMap.get()))
return std::error_code(1, std::generic_category());
@@ -243,6 +247,10 @@ std::error_code ModularizeUtilities::loadModuleMap(
// Indicate we are using module maps.
HasModuleMap = true;
+ // Return code of 1 for missing headers.
+ if (MissingHeaderCount)
+ return std::error_code(1, std::generic_category());
+
return std::error_code();
}
@@ -310,6 +318,17 @@ bool ModularizeUtilities::collectModuleHeaders(const Module &Mod) {
HeaderFileNames.push_back(HeaderPath);
}
+ int MissingCountThisModule = Mod.MissingHeaders.size();
+
+ for (int Index = 0; Index < MissingCountThisModule; ++Index) {
+ std::string MissingFile = Mod.MissingHeaders[Index].FileName;
+ SourceLocation Loc = Mod.MissingHeaders[Index].FileNameLoc;
+ errs() << Loc.printToString(*SourceMgr)
+ << ": error : Header not found: " << MissingFile << "\n";
+ }
+
+ MissingHeaderCount += MissingCountThisModule;
+
return true;
}
OpenPOWER on IntegriCloud