Merge remote-tracking branch 'origin/master' into master-rebranch

This commit is contained in:
swift_jenkins
2020-08-24 11:46:13 -07:00
9 changed files with 119 additions and 2 deletions

View File

@@ -170,6 +170,24 @@ PrintOptions PrintOptions::printSwiftInterfaceFile(bool preferTypeRepr,
if (auto *ED = dyn_cast<ExtensionDecl>(D)) {
if (!shouldPrint(ED->getExtendedNominal(), options))
return false;
// Skip extensions to implementation-only imported types that have
// no public members.
auto localModule = ED->getParentModule();
auto nominalModule = ED->getExtendedNominal()->getParentModule();
if (localModule != nominalModule &&
localModule->isImportedImplementationOnly(nominalModule)) {
bool shouldPrintMembers = llvm::any_of(
ED->getMembers(),
[&](const Decl *member) -> bool {
return shouldPrint(member, options);
});
if (!shouldPrintMembers)
return false;
}
for (const Requirement &req : ED->getGenericRequirements()) {
if (!isPublicOrUsableFromInline(req.getFirstType()))
return false;