@@ -489,6 +489,7 @@ ModuleDecl::ModuleDecl(Identifier name, ASTContext &ctx,
489489 Bits.ModuleDecl .IsNonSwiftModule = 0 ;
490490 Bits.ModuleDecl .IsMainModule = 0 ;
491491 Bits.ModuleDecl .HasIncrementalInfo = 0 ;
492+ Bits.ModuleDecl .IsConcurrencyChecked = 0 ;
492493}
493494
494495ImplicitImportList ModuleDecl::getImplicitImports () const {
@@ -978,6 +979,21 @@ static bool shouldCreateMissingConformances(ProtocolDecl *proto) {
978979 return proto->isSpecificProtocol (KnownProtocolKind::Sendable);
979980}
980981
982+ ProtocolConformanceRef ProtocolConformanceRef::forMissingOrInvalid (
983+ Type type, ProtocolDecl *proto) {
984+ // Introduce "missing" conformances when appropriate, so that type checking
985+ // (and even code generation) can continue.
986+ ASTContext &ctx = proto->getASTContext ();
987+ if (shouldCreateMissingConformances (proto)) {
988+ return ProtocolConformanceRef (
989+ ctx.getBuiltinConformance (
990+ type, proto, GenericSignature (), { },
991+ BuiltinConformanceKind::Missing));
992+ }
993+
994+ return ProtocolConformanceRef::forInvalid ();
995+ }
996+
981997ProtocolConformanceRef ModuleDecl::lookupConformance (Type type,
982998 ProtocolDecl *protocol,
983999 bool allowMissing) {
@@ -1007,23 +1023,6 @@ ProtocolConformanceRef ModuleDecl::lookupConformance(Type type,
10071023 return result;
10081024}
10091025
1010- // / Retrieve an invalid or missing conformance, as appropriate, when a
1011- // / legitimate conformance doesn't exist.
1012- static ProtocolConformanceRef getInvalidOrMissingConformance (
1013- Type type, ProtocolDecl *proto) {
1014- // Introduce "missing" conformances when appropriate, so that type checking
1015- // (and even code generation) can continue.
1016- ASTContext &ctx = proto->getASTContext ();
1017- if (shouldCreateMissingConformances (proto)) {
1018- return ProtocolConformanceRef (
1019- ctx.getBuiltinConformance (
1020- type, proto, GenericSignature (), { },
1021- BuiltinConformanceKind::Missing));
1022- }
1023-
1024- return ProtocolConformanceRef::forInvalid ();
1025- }
1026-
10271026// / Synthesize a builtin tuple type conformance to the given protocol, if
10281027// / appropriate.
10291028static ProtocolConformanceRef getBuiltinTupleTypeConformance (
@@ -1083,7 +1082,7 @@ static ProtocolConformanceRef getBuiltinTupleTypeConformance(
10831082 ctx.getSpecializedConformance (type, genericConformance, subMap));
10841083 }
10851084
1086- return getInvalidOrMissingConformance (type, protocol);
1085+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
10871086}
10881087
10891088// / Whether the given function type conforms to Sendable.
@@ -1116,7 +1115,7 @@ static ProtocolConformanceRef getBuiltinFunctionTypeConformance(
11161115 BuiltinConformanceKind::Synthesized));
11171116 }
11181117
1119- return getInvalidOrMissingConformance (type, protocol);
1118+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
11201119}
11211120
11221121// / Synthesize a builtin metatype type conformance to the given protocol, if
@@ -1131,7 +1130,7 @@ static ProtocolConformanceRef getBuiltinMetaTypeTypeConformance(
11311130 BuiltinConformanceKind::Synthesized));
11321131 }
11331132
1134- return getInvalidOrMissingConformance (type, protocol);
1133+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
11351134}
11361135
11371136// / Synthesize a builtin type conformance to the given protocol, if
@@ -1146,7 +1145,7 @@ static ProtocolConformanceRef getBuiltinBuiltinTypeConformance(
11461145 BuiltinConformanceKind::Synthesized));
11471146 }
11481147
1149- return getInvalidOrMissingConformance (type, protocol);
1148+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
11501149}
11511150
11521151ProtocolConformanceRef
@@ -1184,7 +1183,7 @@ LookupConformanceInModuleRequest::evaluate(
11841183 return ProtocolConformanceRef (protocol);
11851184 }
11861185
1187- return getInvalidOrMissingConformance (type, protocol);
1186+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
11881187 }
11891188
11901189 // An existential conforms to a protocol if the protocol is listed in the
@@ -1193,7 +1192,7 @@ LookupConformanceInModuleRequest::evaluate(
11931192 if (type->isExistentialType ()) {
11941193 auto result = mod->lookupExistentialConformance (type, protocol);
11951194 if (result.isInvalid ())
1196- return getInvalidOrMissingConformance (type, protocol);
1195+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
11971196 return result;
11981197 }
11991198
@@ -1231,13 +1230,13 @@ LookupConformanceInModuleRequest::evaluate(
12311230
12321231 // If we don't have a nominal type, there are no conformances.
12331232 if (!nominal || isa<ProtocolDecl>(nominal))
1234- return getInvalidOrMissingConformance (type, protocol);
1233+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
12351234
12361235 // Find the (unspecialized) conformance.
12371236 SmallVector<ProtocolConformance *, 2 > conformances;
12381237 if (!nominal->lookupConformance (protocol, conformances)) {
12391238 if (!protocol->isSpecificProtocol (KnownProtocolKind::Sendable))
1240- return getInvalidOrMissingConformance (type, protocol);
1239+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
12411240
12421241 // Try to infer Sendable conformance.
12431242 GetImplicitSendableRequest cvRequest{nominal};
@@ -1246,7 +1245,7 @@ LookupConformanceInModuleRequest::evaluate(
12461245 conformances.clear ();
12471246 conformances.push_back (conformance);
12481247 } else {
1249- return getInvalidOrMissingConformance (type, protocol);
1248+ return ProtocolConformanceRef::forMissingOrInvalid (type, protocol);
12501249 }
12511250 }
12521251
0 commit comments