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 | |
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')
-rw-r--r-- | clang-tools-extra/modularize/CoverageChecker.cpp | 10 | ||||
-rw-r--r-- | clang-tools-extra/modularize/Modularize.cpp | 4 | ||||
-rw-r--r-- | clang-tools-extra/modularize/ModularizeUtilities.cpp | 19 | ||||
-rw-r--r-- | clang-tools-extra/modularize/ModularizeUtilities.h | 2 |
4 files changed, 28 insertions, 7 deletions
diff --git a/clang-tools-extra/modularize/CoverageChecker.cpp b/clang-tools-extra/modularize/CoverageChecker.cpp index 3a9faa4f696..b3c4227b623 100644 --- a/clang-tools-extra/modularize/CoverageChecker.cpp +++ b/clang-tools-extra/modularize/CoverageChecker.cpp @@ -221,13 +221,13 @@ bool CoverageChecker::collectModuleHeaders(const Module &Mod) { } for (auto &HeaderKind : Mod.Headers) - for (auto &Header : HeaderKind) - ModuleMapHeadersSet.insert(ModularizeUtilities::getCanonicalPath( - Header.Entry->getName())); + for (auto &Header : HeaderKind) + ModuleMapHeadersSet.insert(ModularizeUtilities::getCanonicalPath( + Header.Entry->getName())); for (Module::submodule_const_iterator MI = Mod.submodule_begin(), - MIEnd = Mod.submodule_end(); - MI != MIEnd; ++MI) + MIEnd = Mod.submodule_end(); + MI != MIEnd; ++MI) collectModuleHeaders(**MI); return true; diff --git a/clang-tools-extra/modularize/Modularize.cpp b/clang-tools-extra/modularize/Modularize.cpp index 65ed3eadc70..667cd01cdf3 100644 --- a/clang-tools-extra/modularize/Modularize.cpp +++ b/clang-tools-extra/modularize/Modularize.cpp @@ -738,8 +738,8 @@ int main(int Argc, const char **Argv) { ListFileNames, HeaderPrefix)); // Get header file names and dependencies. - ModUtil->loadAllHeaderListsAndDependencies(); - + if (ModUtil->loadAllHeaderListsAndDependencies()) + HadErrors = 1; // If we are in assistant mode, output the module map and quit. if (ModuleMapPath.length() != 0) { 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; } diff --git a/clang-tools-extra/modularize/ModularizeUtilities.h b/clang-tools-extra/modularize/ModularizeUtilities.h index 61a97d8f22e..9c1ee74107d 100644 --- a/clang-tools-extra/modularize/ModularizeUtilities.h +++ b/clang-tools-extra/modularize/ModularizeUtilities.h @@ -52,6 +52,8 @@ public: DependencyMap Dependencies; /// True if we have module maps. bool HasModuleMap; + /// Missing header count. + int MissingHeaderCount; // Functions. |