diff options
-rw-r--r-- | clang/lib/Frontend/FrontendActions.cpp | 20 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/dummy.h | 4 | ||||
-rw-r--r-- | clang/test/Modules/modular_maps.cpp | 2 | ||||
-rw-r--r-- | clang/test/Modules/separate_map_tree.cpp | 2 |
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_; |