[AST] Rework isSDKModule with a different algorithm

This commit is contained in:
Alexis Laferrière
2022-12-12 15:48:25 -08:00
parent ac704e4e7f
commit 03708d2a06

View File

@@ -1997,15 +1997,20 @@ StringRef ModuleDecl::getModuleLoadedFilename() const {
}
bool ModuleDecl::isSDKModule() const {
if (getASTContext().SearchPathOpts.getSDKPath().empty())
auto sdkPath = getASTContext().SearchPathOpts.getSDKPath();
if (sdkPath.empty())
return false;
auto sdkPath = SmallString<8>(),
modulePath = SmallString<8>();
llvm::sys::path::native(getASTContext().SearchPathOpts.getSDKPath(), sdkPath);
llvm::sys::path::native(getModuleSourceFilename(), modulePath);
return modulePath.startswith(sdkPath);
auto modulePath = getModuleSourceFilename();
auto si = llvm::sys::path::begin(sdkPath),
se = llvm::sys::path::end(sdkPath);
for (auto mi = llvm::sys::path::begin(modulePath),
me = llvm::sys::path::end(modulePath);
si != se && mi != me; ++si, ++mi) {
if (*si != *mi)
return false;
}
return si == se;
}
bool ModuleDecl::isStdlibModule() const {