Modules: Don't warn upon missing headers while reading the module map.
Instead, mark the module as unavailable so that clang errors as soon as someone tries to build this module. This works towards the long-term goal of not stat'ing the header files at all while reading the module map and instead read them only when the module is being built (there is a corresponding FIXME in parseHeaderDecl()). However, it seems non-trivial to get there and this unblock us and moves us into the right direction. Also changed the implementation to reuse the same DiagnosticsEngine. llvm-svn: 197485
This commit is contained in:
@@ -69,11 +69,15 @@ static bool hasFeature(StringRef Feature, const LangOptions &LangOpts,
|
||||
|
||||
bool
|
||||
Module::isAvailable(const LangOptions &LangOpts, const TargetInfo &Target,
|
||||
Requirement &Req) const {
|
||||
Requirement &Req, HeaderDirective &MissingHeader) const {
|
||||
if (IsAvailable)
|
||||
return true;
|
||||
|
||||
for (const Module *Current = this; Current; Current = Current->Parent) {
|
||||
if (!Current->MissingHeaders.empty()) {
|
||||
MissingHeader = Current->MissingHeaders.front();
|
||||
return false;
|
||||
}
|
||||
for (unsigned I = 0, N = Current->Requirements.size(); I != N; ++I) {
|
||||
if (hasFeature(Current->Requirements[I].first, LangOpts, Target) !=
|
||||
Current->Requirements[I].second) {
|
||||
|
||||
Reference in New Issue
Block a user