@@ -519,7 +519,7 @@ getActualClangDeclPathComponentKind(uint64_t raw) {
519
519
return std::nullopt;
520
520
}
521
521
522
- ParameterList *ModuleFile::readParameterList () {
522
+ Expected< ParameterList *> ModuleFile::readParameterList () {
523
523
using namespace decls_block ;
524
524
525
525
SmallVector<uint64_t , 8 > scratch;
@@ -534,8 +534,11 @@ ParameterList *ModuleFile::readParameterList() {
534
534
decls_block::ParameterListLayout::readRecord (scratch, rawMemberIDs);
535
535
536
536
SmallVector<ParamDecl *, 8 > params;
537
- for (DeclID paramID : rawMemberIDs)
538
- params.push_back (cast<ParamDecl>(getDecl (paramID)));
537
+ for (DeclID paramID : rawMemberIDs) {
538
+ Decl *param;
539
+ UNWRAP (getDeclChecked (paramID), param);
540
+ params.push_back (cast<ParamDecl>(param));
541
+ }
539
542
540
543
return ParameterList::create (getContext (), params);
541
544
}
@@ -3680,7 +3683,8 @@ class DeclDeserializer {
3680
3683
else
3681
3684
return MF.diagnoseFatal ();
3682
3685
3683
- auto *bodyParams = MF.readParameterList ();
3686
+ ParameterList *bodyParams;
3687
+ UNWRAP (MF.readParameterList (), bodyParams);
3684
3688
assert (bodyParams && " missing parameters for constructor" );
3685
3689
ctor->setParameters (bodyParams);
3686
3690
@@ -4264,7 +4268,8 @@ class DeclDeserializer {
4264
4268
fn->setStatic (isStatic);
4265
4269
fn->setImplicitlyUnwrappedOptional (isIUO);
4266
4270
4267
- ParameterList *paramList = MF.readParameterList ();
4271
+ ParameterList *paramList;
4272
+ UNWRAP (MF.readParameterList (), paramList);
4268
4273
fn->setParameters (paramList);
4269
4274
4270
4275
auto lifetimeDependenceInfo = MF.maybeReadLifetimeDependenceInfo (
@@ -4992,7 +4997,8 @@ class DeclDeserializer {
4992
4997
4993
4998
// Read payload parameter list, if it exists.
4994
4999
if (hasPayload) {
4995
- auto *paramList = MF.readParameterList ();
5000
+ ParameterList *paramList;
5001
+ UNWRAP (MF.readParameterList (), paramList);
4996
5002
elem->setParameterList (paramList);
4997
5003
}
4998
5004
@@ -5111,7 +5117,9 @@ class DeclDeserializer {
5111
5117
5112
5118
subscript->setGenericSignature (MF.getGenericSignature (genericSigID));
5113
5119
5114
- subscript->setIndices (MF.readParameterList ());
5120
+ ParameterList *paramList;
5121
+ UNWRAP (MF.readParameterList (), paramList);
5122
+ subscript->setIndices (paramList);
5115
5123
5116
5124
MF.configureStorage (subscript, opaqueReadOwnership,
5117
5125
readImpl, writeImpl, readWriteImpl, accessors);
@@ -5138,9 +5146,12 @@ class DeclDeserializer {
5138
5146
AddAttribute (new (ctx) OverrideAttr (SourceLoc ()));
5139
5147
5140
5148
if (opaqueReturnTypeID) {
5149
+ Decl *opaqueReturnType;
5150
+ UNWRAP (MF.getDeclChecked (opaqueReturnTypeID), opaqueReturnType);
5151
+
5141
5152
ctx.evaluator .cacheOutput (
5142
5153
OpaqueResultTypeRequest{subscript},
5143
- cast<OpaqueTypeDecl>(MF. getDecl (opaqueReturnTypeID) ));
5154
+ cast<OpaqueTypeDecl>(opaqueReturnType ));
5144
5155
}
5145
5156
5146
5157
return subscript;
@@ -5352,8 +5363,9 @@ class DeclDeserializer {
5352
5363
macro->setGenericSignature (MF.getGenericSignature (genericSigID));
5353
5364
macro->resultType .setType (resultInterfaceType);
5354
5365
5355
- if (hasParameterList)
5356
- macro->parameterList = MF.readParameterList ();
5366
+ if (hasParameterList) {
5367
+ UNWRAP (MF.readParameterList (), macro->parameterList );
5368
+ }
5357
5369
5358
5370
if (auto accessLevel = getActualAccessLevel (rawAccessLevel))
5359
5371
macro->setAccess (*accessLevel);
0 commit comments