diff options
author | John Thompson <John.Thompson.JTSoftware@gmail.com> | 2015-06-04 23:35:19 +0000 |
---|---|---|
committer | John Thompson <John.Thompson.JTSoftware@gmail.com> | 2015-06-04 23:35:19 +0000 |
commit | 96f5551b036590fed75490f4c2fe4c5af0224f9b (patch) | |
tree | 460309190fd01945eb776280eea66829923a55a3 /clang-tools-extra/modularize/ModularizeUtilities.cpp | |
parent | bb2591f5efca96f110e4e7cd57f78bda9c652269 (diff) | |
download | bcm5719-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.cpp | 19 |
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; } |