Skip to content

Commit 7bf543c

Browse files
authored
Merge pull request #80460 from ktoso/pick-wip-dontcrash-on-missing-type-when-detecting-distributed-adhoc-reqs
🍒[6.1][Distributed] Dont crash on specificly names methods which triggered Distributed checks
2 parents 808c8a5 + 2e5a0f4 commit 7bf543c

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

lib/AST/DistributedDecl.cpp

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,10 @@ bool AbstractFunctionDecl::isDistributedActorSystemRemoteCall(bool isVoidReturn)
488488
}
489489

490490
// === Must be declared in a 'DistributedActorSystem' conforming type
491-
ProtocolDecl *systemProto =
492-
C.getDistributedActorSystemDecl();
491+
ProtocolDecl *systemProto = C.getDistributedActorSystemDecl();
492+
if (!systemProto) {
493+
return false;
494+
}
493495

494496
auto systemNominal = DC->getSelfNominalTypeDecl();
495497
auto distSystemConformance = lookupConformance(
@@ -794,6 +796,9 @@ AbstractFunctionDecl::isDistributedTargetInvocationEncoderRecordArgument() const
794796
// === Must be declared in a 'DistributedTargetInvocationEncoder' conforming type
795797
ProtocolDecl *encoderProto =
796798
C.getProtocol(KnownProtocolKind::DistributedTargetInvocationEncoder);
799+
if (!encoderProto) {
800+
return false;
801+
}
797802

798803
auto encoderNominal = getDeclContext()->getSelfNominalTypeDecl();
799804
auto protocolConformance = lookupConformance(
@@ -925,6 +930,9 @@ AbstractFunctionDecl::isDistributedTargetInvocationEncoderRecordReturnType() con
925930
// === Must be declared in a 'DistributedTargetInvocationEncoder' conforming type
926931
ProtocolDecl *encoderProto =
927932
C.getProtocol(KnownProtocolKind::DistributedTargetInvocationEncoder);
933+
if (!encoderProto) {
934+
return false;
935+
}
928936

929937
auto encoderNominal = getDeclContext()->getSelfNominalTypeDecl();
930938
auto protocolConformance = lookupConformance(
@@ -1051,6 +1059,9 @@ AbstractFunctionDecl::isDistributedTargetInvocationEncoderRecordErrorType() cons
10511059
// === Must be declared in a 'DistributedTargetInvocationEncoder' conforming type
10521060
ProtocolDecl *encoderProto =
10531061
C.getProtocol(KnownProtocolKind::DistributedTargetInvocationEncoder);
1062+
if (!encoderProto) {
1063+
return false;
1064+
}
10541065

10551066
auto encoderNominal = getDeclContext()->getSelfNominalTypeDecl();
10561067
auto protocolConformance = lookupConformance(
@@ -1158,7 +1169,9 @@ AbstractFunctionDecl::isDistributedTargetInvocationDecoderDecodeNextArgument() c
11581169
// === Must be declared in a 'DistributedTargetInvocationEncoder' conforming type
11591170
ProtocolDecl *decoderProto =
11601171
C.getProtocol(KnownProtocolKind::DistributedTargetInvocationDecoder);
1161-
1172+
if (!decoderProto) {
1173+
return false;
1174+
}
11621175
auto decoderNominal = getDeclContext()->getSelfNominalTypeDecl();
11631176
auto protocolConformance = lookupConformance(
11641177
decoderNominal->getDeclaredInterfaceType(), decoderProto);
@@ -1251,6 +1264,9 @@ AbstractFunctionDecl::isDistributedTargetInvocationResultHandlerOnReturn() const
12511264
// === Must be declared in a 'DistributedTargetInvocationEncoder' conforming type
12521265
ProtocolDecl *decoderProto =
12531266
C.getProtocol(KnownProtocolKind::DistributedTargetInvocationResultHandler);
1267+
if (!decoderProto) {
1268+
return false;
1269+
}
12541270

12551271
auto decoderNominal = getDeclContext()->getSelfNominalTypeDecl();
12561272
auto protocolConformance = lookupConformance(

0 commit comments

Comments
 (0)