const TargetInfo &Target);
/// \brief Mark this module and all of its submodules as unavailable.
- void markUnavailable();
+ void markUnavailable(bool MissingRequirement = false);
/// \brief Find the submodule with the given name.
///
IsSystem = true;
if (Parent->IsExternC)
IsExternC = true;
+ IsMissingRequirement = Parent->IsMissingRequirement;
Parent->SubModuleIndex[Name] = Parent->SubModules.size();
Parent->SubModules.push_back(this);
if (hasFeature(Feature, LangOpts, Target) == RequiredState)
return;
- IsMissingRequirement = true;
- markUnavailable();
+ markUnavailable(/*MissingRequirement*/true);
}
-void Module::markUnavailable() {
+void Module::markUnavailable(bool MissingRequirement) {
if (!IsAvailable)
return;
continue;
Current->IsAvailable = false;
+ Current->IsMissingRequirement |= MissingRequirement;
for (submodule_iterator Sub = Current->submodule_begin(),
SubEnd = Current->submodule_end();
Sub != SubEnd; ++Sub) {