]> granicus.if.org Git - clang/commitdiff
Make sure we pick up module_private.map when loading a module.map file.
authorDouglas Gregor <dgregor@apple.com>
Wed, 7 Dec 2011 21:25:07 +0000 (21:25 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 7 Dec 2011 21:25:07 +0000 (21:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146074 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/HeaderSearch.cpp
test/Modules/auto-module-import.m

index 7035b9c45d9827fe0bbb8542ccdc517f2971fa2a..9a7230c24e672d1b240f60a0727ce0077540da13 100644 (file)
@@ -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;
 }
 
index c1708e8eae25b47b2cea1c34cac77ffda630856c..4ddd0e10259f81648d10af33052cc04c8fe92271 100644 (file)
@@ -42,3 +42,5 @@ void testModuleSubFrameworkAgain() {
 
 // Test inclusion of private headers.
 #include <DependsOnModule/DependsOnModulePrivate.h> // expected-warning{{treating #include as an import of module 'DependsOnModule.Private.DependsOnModule'}}
+
+int getDependsOnModulePrivate() { return depends_on_module_private; }