diff options
author | Ben Langmuir <blangmuir@apple.com> | 2014-04-21 19:49:57 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2014-04-21 19:49:57 +0000 |
commit | 4898cde4e100d65de375ee0bbf19c66061fa4f25 (patch) | |
tree | aa731d2a5592021df152e969eeaf11a214f1abd1 /clang | |
parent | 6d23a7b600bfdf53b48f5742058723276a70a4ef (diff) | |
download | bcm5719-llvm-4898cde4e100d65de375ee0bbf19c66061fa4f25.tar.gz bcm5719-llvm-4898cde4e100d65de375ee0bbf19c66061fa4f25.zip |
Allow submodule inferrences with a missing umbrella when the module is unavailable
If the module is unavailable because of a missing header, don't diagnose
a "module * {}" declaration for having a missing umbrella.
llvm-svn: 206776
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Lex/ModuleMap.cpp | 3 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/submodules/module.map | 6 |
2 files changed, 8 insertions, 1 deletions
diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp index 0e712b0dce6..068e16d0431 100644 --- a/clang/lib/Lex/ModuleMap.cpp +++ b/clang/lib/Lex/ModuleMap.cpp @@ -1988,7 +1988,8 @@ void ModuleMapParser::parseInferredModuleDecl(bool Framework, bool Explicit) { if (ActiveModule) { // Inferred modules must have umbrella directories. - if (!Failed && !ActiveModule->getUmbrellaDir()) { + if (!Failed && ActiveModule->IsAvailable && + !ActiveModule->getUmbrellaDir()) { Diags.Report(StarLoc, diag::err_mmap_inferred_no_umbrella); Failed = true; } diff --git a/clang/test/Modules/Inputs/submodules/module.map b/clang/test/Modules/Inputs/submodules/module.map index 27c1ee4c615..1c1b76a0896 100644 --- a/clang/test/Modules/Inputs/submodules/module.map +++ b/clang/test/Modules/Inputs/submodules/module.map @@ -24,3 +24,9 @@ module missing_unavailable_headers { } module not_missing { } } + +module missing_umbrella_with_inferred_submodules { + umbrella header "missing_umbrella.h" + module * { export * } + export * +} |