Skip to content

Commit cbde186

Browse files
slavapestovktoso
authored andcommitted
Distributed: Some cleanups
1 parent 30653a8 commit cbde186

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

lib/AST/DistributedDecl.cpp

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -341,11 +341,12 @@ swift::getDistributedSerializationRequirements(
341341
return true; // we're done here, any means there are no requirements
342342

343343
auto *serialReqType = existentialRequirementTy->getAs<ExistentialType>();
344+
->getAs<ExistentialType>();
344345
if (!serialReqType || serialReqType->hasError()) {
345346
return false;
346347
}
347348

348-
auto layout = serialReqType->getExistentialLayout();
349+
auto desugaredTy = serialReqType->getConstraintType();
349350
for (auto p : layout.getProtocols()) {
350351
requirementProtos.insert(p);
351352
}
@@ -1224,15 +1225,25 @@ swift::extractDistributedSerializationRequirements(
12241225
DA->getAssociatedType(C.Id_SerializationRequirement);
12251226

12261227
for (auto req : allRequirements) {
1227-
// FIXME: Seems unprincipled
1228-
if (req.getKind() != RequirementKind::SameType &&
1229-
req.getKind() != RequirementKind::Conformance)
1228+
if (req.getSecondType()->isAny()) {
1229+
continue;
1230+
}
1231+
if (!req.getFirstType()->hasDependentMember())
12301232
continue;
12311233

12321234
if (auto dependentMemberType =
1233-
req.getFirstType()->getAs<DependentMemberType>()) {
1235+
req.getFirstType()->castTo<DependentMemberType>()) {
12341236
if (dependentMemberType->getAssocType() == daSerializationReqAssocType) {
1235-
auto layout = req.getSecondType()->getExistentialLayout();
1237+
auto requirementProto = req.getSecondType();
1238+
if (auto proto = dyn_cast_or_null<ProtocolDecl>(
1239+
requirementProto->getAnyNominal())) {
1240+
into.insert(proto);
1241+
} else {
1242+
auto serialReqType = requirementProto->castTo<ExistentialType>()
1243+
->getConstraintType();
1244+
auto flattenedRequirements =
1245+
flattenDistributedSerializationTypeToRequiredProtocols(
1246+
serialReqType.getPointer());
12361247
for (auto p : layout.getProtocols()) {
12371248
serializationReqs.insert(p);
12381249
}

0 commit comments

Comments
 (0)