From: Douglas Gregor Date: Wed, 7 Dec 2011 21:25:07 +0000 (+0000) Subject: Make sure we pick up module_private.map when loading a module.map file. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4813442c124d13a5c9cbf71beb7762275e45aacd;p=clang Make sure we pick up module_private.map when loading a module.map file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146074 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/HeaderSearch.cpp b/lib/Lex/HeaderSearch.cpp index 7035b9c45d..9a7230c24e 100644 --- a/lib/Lex/HeaderSearch.cpp +++ b/lib/Lex/HeaderSearch.cpp @@ -799,7 +799,16 @@ bool HeaderSearch::loadModuleMapFile(const FileEntry *File) { return !KnownDir->second; bool Result = ModMap.parseModuleMapFile(File); - DirectoryHasModuleMap[Dir] = !Result; + if (!Result && llvm::sys::path::filename(File->getName()) == "module.map") { + // If the file we loaded was a module.map, look for the corresponding + // module_private.map. + llvm::SmallString<128> PrivateFilename(Dir->getName()); + llvm::sys::path::append(PrivateFilename, "module_private.map"); + if (const FileEntry *PrivateFile = FileMgr.getFile(PrivateFilename)) + Result = ModMap.parseModuleMapFile(PrivateFile); + } + + DirectoryHasModuleMap[Dir] = !Result; return Result; } diff --git a/test/Modules/auto-module-import.m b/test/Modules/auto-module-import.m index c1708e8eae..4ddd0e1025 100644 --- a/test/Modules/auto-module-import.m +++ b/test/Modules/auto-module-import.m @@ -42,3 +42,5 @@ void testModuleSubFrameworkAgain() { // Test inclusion of private headers. #include // expected-warning{{treating #include as an import of module 'DependsOnModule.Private.DependsOnModule'}} + +int getDependsOnModulePrivate() { return depends_on_module_private; }