summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Frontend/FrontendActions.cpp20
-rw-r--r--clang/test/Modules/Inputs/dummy.h4
-rw-r--r--clang/test/Modules/modular_maps.cpp2
-rw-r--r--clang/test/Modules/separate_map_tree.cpp2
4 files changed, 16 insertions, 12 deletions
diff --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp
index d6c88d20fc2..407ccea2e7d 100644
--- a/clang/lib/Frontend/FrontendActions.cpp
+++ b/clang/lib/Frontend/FrontendActions.cpp
@@ -187,15 +187,17 @@ collectModuleHeaderIncludes(const LangOptions &LangOpts, FileManager &FileMgr,
return std::error_code();
// Add includes for each of these headers.
- for (Module::Header &H : Module->Headers[Module::HK_Normal]) {
- Module->addTopHeader(H.Entry);
- // Use the path as specified in the module map file. We'll look for this
- // file relative to the module build directory (the directory containing
- // the module map file) so this will find the same file that we found
- // while parsing the module map.
- if (std::error_code Err = addHeaderInclude(H.NameAsWritten, Includes,
- LangOpts, Module->IsExternC))
- return Err;
+ for (auto HK : {Module::HK_Normal, Module::HK_Private}) {
+ for (Module::Header &H : Module->Headers[HK]) {
+ Module->addTopHeader(H.Entry);
+ // Use the path as specified in the module map file. We'll look for this
+ // file relative to the module build directory (the directory containing
+ // the module map file) so this will find the same file that we found
+ // while parsing the module map.
+ if (std::error_code Err = addHeaderInclude(H.NameAsWritten, Includes,
+ LangOpts, Module->IsExternC))
+ return Err;
+ }
}
// Note that Module->PrivateHeaders will not be a TopHeader.
diff --git a/clang/test/Modules/Inputs/dummy.h b/clang/test/Modules/Inputs/dummy.h
index 6e1ac74e44f..cad83154dc2 100644
--- a/clang/test/Modules/Inputs/dummy.h
+++ b/clang/test/Modules/Inputs/dummy.h
@@ -1,3 +1,5 @@
// This module only exists to make local decl IDs and global decl IDs different.
-
+#ifndef DUMMY_H
+#define DUMMY_H
struct Dummy {} extern *dummy1, *dummy2, *dummy3;
+#endif
diff --git a/clang/test/Modules/modular_maps.cpp b/clang/test/Modules/modular_maps.cpp
index 3b6afc7552d..fc44131d458 100644
--- a/clang/test/Modules/modular_maps.cpp
+++ b/clang/test/Modules/modular_maps.cpp
@@ -16,4 +16,4 @@
#include "b.h" // expected-error {{private header}}
@import C;
const int v = a + c + x;
-const int val = a + b + c + x; // expected-error {{undeclared identifier}}
+const int val = a + b + c + x;
diff --git a/clang/test/Modules/separate_map_tree.cpp b/clang/test/Modules/separate_map_tree.cpp
index 5a1fff4efc7..a5cb9888a60 100644
--- a/clang/test/Modules/separate_map_tree.cpp
+++ b/clang/test/Modules/separate_map_tree.cpp
@@ -5,4 +5,4 @@
#include "public-in-b.h" // expected-error {{private header}}
#include "public-in-c.h"
#include "private-in-c.h" // expected-error {{private header}}
-const int val = common + b + c + c_; // expected-error {{undeclared identifier}}
+const int val = common + b + c + c_;
OpenPOWER on IntegriCloud