@@ -1197,7 +1197,8 @@ ModuleFile::getConformanceChecked(ProtocolConformanceID conformanceID) {
11971197 }
11981198}
11991199
1200- GenericParamList *ModuleFile::maybeReadGenericParams (DeclContext *DC) {
1200+ Expected<GenericParamList *>
1201+ ModuleFile::maybeReadGenericParams (DeclContext *DC) {
12011202 using namespace decls_block ;
12021203
12031204 assert (DC && " need a context for the decls in the list" );
@@ -1222,7 +1223,10 @@ GenericParamList *ModuleFile::maybeReadGenericParams(DeclContext *DC) {
12221223 ArrayRef<uint64_t > paramIDs;
12231224 GenericParamListLayout::readRecord (scratch, paramIDs);
12241225 for (DeclID nextParamID : paramIDs) {
1225- auto genericParam = cast<GenericTypeParamDecl>(getDecl (nextParamID));
1226+ Decl *nextParam;
1227+ UNWRAP (getDeclChecked (nextParamID), nextParam);
1228+
1229+ auto genericParam = cast<GenericTypeParamDecl>(nextParam);
12261230 params.push_back (genericParam);
12271231 }
12281232
@@ -3427,7 +3431,8 @@ class DeclDeserializer {
34273431 DeclContext *DC;
34283432 UNWRAP (MF.getDeclContextChecked (contextID), DC);
34293433
3430- auto genericParams = MF.maybeReadGenericParams (DC);
3434+ GenericParamList *genericParams;
3435+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
34313436 if (declOrOffset.isComplete ())
34323437 return declOrOffset;
34333438
@@ -3586,7 +3591,8 @@ class DeclDeserializer {
35863591 if (declOrOffset.isComplete ())
35873592 return declOrOffset;
35883593
3589- auto genericParams = MF.maybeReadGenericParams (DC);
3594+ GenericParamList *genericParams;
3595+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
35903596 if (declOrOffset.isComplete ())
35913597 return declOrOffset;
35923598
@@ -3700,7 +3706,8 @@ class DeclDeserializer {
37003706 if (declOrOffset.isComplete ())
37013707 return declOrOffset;
37023708
3703- auto *genericParams = MF.maybeReadGenericParams (parent);
3709+ GenericParamList *genericParams;
3710+ UNWRAP (MF.maybeReadGenericParams (parent), genericParams);
37043711 if (declOrOffset.isComplete ())
37053712 return declOrOffset;
37063713
@@ -4254,7 +4261,8 @@ class DeclDeserializer {
42544261 // Read generic params before reading the type, because the type may
42554262 // reference generic parameters, and we want them to have a dummy
42564263 // DeclContext for now.
4257- GenericParamList *genericParams = MF.maybeReadGenericParams (DC);
4264+ GenericParamList *genericParams;
4265+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
42584266
42594267 auto staticSpelling = getActualStaticSpellingKind (rawStaticSpelling);
42604268 if (!staticSpelling.has_value ())
@@ -4488,7 +4496,8 @@ class DeclDeserializer {
44884496 if (declOrOffset.isComplete ())
44894497 return cast<OpaqueTypeDecl>(declOrOffset.get ());
44904498
4491- auto genericParams = MF.maybeReadGenericParams (declContext);
4499+ GenericParamList *genericParams;
4500+ UNWRAP (MF.maybeReadGenericParams (declContext), genericParams);
44924501
44934502 // Create the decl.
44944503 auto opaqueDecl = OpaqueTypeDecl::get (
@@ -4689,7 +4698,8 @@ class DeclDeserializer {
46894698 ctx.evaluator .cacheOutput (InheritedProtocolsRequest{proto},
46904699 ctx.AllocateCopy (inherited));
46914700
4692- auto genericParams = MF.maybeReadGenericParams (DC);
4701+ GenericParamList *genericParams;
4702+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
46934703 assert (genericParams && " protocol with no generic parameters?" );
46944704 ctx.evaluator .cacheOutput (GenericParamListRequest{proto},
46954705 std::move (genericParams));
@@ -4884,7 +4894,8 @@ class DeclDeserializer {
48844894 if (declOrOffset.isComplete ())
48854895 return declOrOffset;
48864896
4887- auto genericParams = MF.maybeReadGenericParams (DC);
4897+ GenericParamList *genericParams;
4898+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
48884899 if (declOrOffset.isComplete ())
48894900 return declOrOffset;
48904901
@@ -4962,7 +4973,8 @@ class DeclDeserializer {
49624973 return DCOrError.takeError ();
49634974 auto DC = DCOrError.get ();
49644975
4965- auto genericParams = MF.maybeReadGenericParams (DC);
4976+ GenericParamList *genericParams;
4977+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
49664978 if (declOrOffset.isComplete ())
49674979 return declOrOffset;
49684980
@@ -5157,7 +5169,8 @@ class DeclDeserializer {
51575169 if (declOrOffset.isComplete ())
51585170 return declOrOffset;
51595171
5160- auto *genericParams = MF.maybeReadGenericParams (parent);
5172+ GenericParamList *genericParams;
5173+ UNWRAP (MF.maybeReadGenericParams (parent), genericParams);
51615174 if (declOrOffset.isComplete ())
51625175 return declOrOffset;
51635176
@@ -5263,7 +5276,12 @@ class DeclDeserializer {
52635276 // Generic parameter lists are written from outermost to innermost.
52645277 // Keep reading until we run out of generic parameter lists.
52655278 GenericParamList *outerParams = nullptr ;
5266- while (auto *genericParams = MF.maybeReadGenericParams (DC)) {
5279+ while (true ) {
5280+ GenericParamList *genericParams;
5281+ UNWRAP (MF.maybeReadGenericParams (DC), genericParams);
5282+ if (!genericParams)
5283+ break ;
5284+
52675285 genericParams->setOuterParameters (outerParams);
52685286
52695287 // Set up the DeclContexts for the GenericTypeParamDecls in the list.
@@ -5407,7 +5425,8 @@ class DeclDeserializer {
54075425 if (declOrOffset.isComplete ())
54085426 return declOrOffset;
54095427
5410- auto *genericParams = MF.maybeReadGenericParams (parent);
5428+ GenericParamList *genericParams;
5429+ UNWRAP (MF.maybeReadGenericParams (parent), genericParams);
54115430 if (declOrOffset.isComplete ())
54125431 return declOrOffset;
54135432
0 commit comments