@@ -1198,7 +1198,8 @@ ModuleFile::getConformanceChecked(ProtocolConformanceID conformanceID) {
11981198 }
11991199}
12001200
1201- GenericParamList *ModuleFile::maybeReadGenericParams (DeclContext *DC) {
1201+ Expected<GenericParamList *>
1202+ ModuleFile::maybeReadGenericParams (DeclContext *DC) {
12021203 using namespace decls_block ;
12031204
12041205 assert (DC && " need a context for the decls in the list" );
@@ -1223,7 +1224,10 @@ GenericParamList *ModuleFile::maybeReadGenericParams(DeclContext *DC) {
12231224 ArrayRef<uint64_t > paramIDs;
12241225 GenericParamListLayout::readRecord (scratch, paramIDs);
12251226 for (DeclID nextParamID : paramIDs) {
1226- auto genericParam = cast<GenericTypeParamDecl>(getDecl (nextParamID));
1227+ Decl *nextParam;
1228+ UNWRAP (getDeclChecked (nextParamID), nextParam);
1229+
1230+ auto genericParam = cast<GenericTypeParamDecl>(nextParam);
12271231 params.push_back (genericParam);
12281232 }
12291233
@@ -3428,7 +3432,8 @@ class DeclDeserializer {
34283432 DeclContext *DC;
34293433 UNWRAP (MF.getDeclContextChecked (contextID), DC);
34303434
3431- auto genericParams = MF.maybeReadGenericParams (DC);
3435+ GenericParamList *genericParams;
3436+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
34323437 if (declOrOffset.isComplete ())
34333438 return declOrOffset;
34343439
@@ -3587,7 +3592,8 @@ class DeclDeserializer {
35873592 if (declOrOffset.isComplete ())
35883593 return declOrOffset;
35893594
3590- auto genericParams = MF.maybeReadGenericParams (DC);
3595+ GenericParamList *genericParams;
3596+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
35913597 if (declOrOffset.isComplete ())
35923598 return declOrOffset;
35933599
@@ -3701,7 +3707,8 @@ class DeclDeserializer {
37013707 if (declOrOffset.isComplete ())
37023708 return declOrOffset;
37033709
3704- auto *genericParams = MF.maybeReadGenericParams (parent);
3710+ GenericParamList *genericParams;
3711+ UNWRAP (MF.maybeReadGenericParams (parent), genericParams);
37053712 if (declOrOffset.isComplete ())
37063713 return declOrOffset;
37073714
@@ -4262,7 +4269,8 @@ class DeclDeserializer {
42624269 // Read generic params before reading the type, because the type may
42634270 // reference generic parameters, and we want them to have a dummy
42644271 // DeclContext for now.
4265- GenericParamList *genericParams = MF.maybeReadGenericParams (DC);
4272+ GenericParamList *genericParams;
4273+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
42664274
42674275 auto staticSpelling = getActualStaticSpellingKind (rawStaticSpelling);
42684276 if (!staticSpelling.has_value ())
@@ -4496,7 +4504,8 @@ class DeclDeserializer {
44964504 if (declOrOffset.isComplete ())
44974505 return cast<OpaqueTypeDecl>(declOrOffset.get ());
44984506
4499- auto genericParams = MF.maybeReadGenericParams (declContext);
4507+ GenericParamList *genericParams;
4508+ UNWRAP (MF.maybeReadGenericParams (declContext), genericParams);
45004509
45014510 // Create the decl.
45024511 auto opaqueDecl = OpaqueTypeDecl::get (
@@ -4697,7 +4706,8 @@ class DeclDeserializer {
46974706 ctx.evaluator .cacheOutput (InheritedProtocolsRequest{proto},
46984707 ctx.AllocateCopy (inherited));
46994708
4700- auto genericParams = MF.maybeReadGenericParams (DC);
4709+ GenericParamList *genericParams;
4710+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
47014711 assert (genericParams && " protocol with no generic parameters?" );
47024712 ctx.evaluator .cacheOutput (GenericParamListRequest{proto},
47034713 std::move (genericParams));
@@ -4892,7 +4902,8 @@ class DeclDeserializer {
48924902 if (declOrOffset.isComplete ())
48934903 return declOrOffset;
48944904
4895- auto genericParams = MF.maybeReadGenericParams (DC);
4905+ GenericParamList *genericParams;
4906+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
48964907 if (declOrOffset.isComplete ())
48974908 return declOrOffset;
48984909
@@ -4970,7 +4981,8 @@ class DeclDeserializer {
49704981 return DCOrError.takeError ();
49714982 auto DC = DCOrError.get ();
49724983
4973- auto genericParams = MF.maybeReadGenericParams (DC);
4984+ GenericParamList *genericParams;
4985+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
49744986 if (declOrOffset.isComplete ())
49754987 return declOrOffset;
49764988
@@ -5165,7 +5177,8 @@ class DeclDeserializer {
51655177 if (declOrOffset.isComplete ())
51665178 return declOrOffset;
51675179
5168- auto *genericParams = MF.maybeReadGenericParams (parent);
5180+ GenericParamList *genericParams;
5181+ UNWRAP (MF.maybeReadGenericParams (parent), genericParams);
51695182 if (declOrOffset.isComplete ())
51705183 return declOrOffset;
51715184
@@ -5271,7 +5284,12 @@ class DeclDeserializer {
52715284 // Generic parameter lists are written from outermost to innermost.
52725285 // Keep reading until we run out of generic parameter lists.
52735286 GenericParamList *outerParams = nullptr ;
5274- while (auto *genericParams = MF.maybeReadGenericParams (DC)) {
5287+ while (true ) {
5288+ GenericParamList *genericParams;
5289+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
5290+ if (!genericParams)
5291+ break ;
5292+
52755293 genericParams->setOuterParameters (outerParams);
52765294
52775295 // Set up the DeclContexts for the GenericTypeParamDecls in the list.
@@ -5415,7 +5433,8 @@ class DeclDeserializer {
54155433 if (declOrOffset.isComplete ())
54165434 return declOrOffset;
54175435
5418- auto *genericParams = MF.maybeReadGenericParams (parent);
5436+ GenericParamList *genericParams;
5437+ UNWRAP (MF.maybeReadGenericParams (parent), genericParams);
54195438 if (declOrOffset.isComplete ())
54205439 return declOrOffset;
54215440
0 commit comments