[Modules] Add Darwin-specific compatibility module map parsing hacks
This preserves backwards compatibility for two hacks in the Darwin system module map files: 1. The use of 'requires excluded' to make headers non-modular, which should really be mapped to 'textual' now that we have this feature. 2. Silently removes a bogus cplusplus requirement from IOKit.avc. Once we start diagnosing missing requirements and headers on auto-imports these would have broken compatibility with existing Darwin SDKs. llvm-svn: 244912
This commit is contained in:
@@ -139,6 +139,15 @@ std::string Module::getFullModuleName() const {
|
||||
return Result;
|
||||
}
|
||||
|
||||
bool Module::fullModuleNameIs(ArrayRef<StringRef> nameParts) const {
|
||||
for (const Module *M = this; M; M = M->Parent) {
|
||||
if (nameParts.empty() || M->Name != nameParts.back())
|
||||
return false;
|
||||
nameParts = nameParts.drop_back();
|
||||
}
|
||||
return nameParts.empty();
|
||||
}
|
||||
|
||||
Module::DirectoryName Module::getUmbrellaDir() const {
|
||||
if (Header U = getUmbrellaHeader())
|
||||
return {"", U.Entry->getDir()};
|
||||
|
||||
Reference in New Issue
Block a user