@@ -4848,7 +4848,9 @@ class TypeDeserializer {
4848
4848
auto substitutedType = substitutedTypeOrError.get ();
4849
4849
4850
4850
// Read the substitutions.
4851
- auto subMap = MF.getSubstitutionMap (substitutionsID);
4851
+ auto subMapOrError = MF.getSubstitutionMapChecked (substitutionsID);
4852
+ if (!subMapOrError)
4853
+ return subMapOrError.takeError ();
4852
4854
4853
4855
auto parentTypeOrError = MF.getTypeChecked (parentTypeID);
4854
4856
if (!parentTypeOrError)
@@ -4858,11 +4860,12 @@ class TypeDeserializer {
4858
4860
if (alias &&
4859
4861
alias->getAttrs ().isUnavailable (ctx) &&
4860
4862
alias->isCompatibilityAlias ()) {
4861
- return alias->getUnderlyingType ().subst (subMap );
4863
+ return alias->getUnderlyingType ().subst (subMapOrError. get () );
4862
4864
}
4863
4865
4864
4866
auto parentType = parentTypeOrError.get ();
4865
- return TypeAliasType::get (alias, parentType, subMap, substitutedType);
4867
+ return TypeAliasType::get (alias, parentType, subMapOrError.get (),
4868
+ substitutedType);
4866
4869
}
4867
4870
4868
4871
Expected<Type> deserializeNominalType (ArrayRef<uint64_t > scratch,
@@ -5180,9 +5183,11 @@ class TypeDeserializer {
5180
5183
return opaqueTypeOrError.takeError ();
5181
5184
5182
5185
auto opaqueDecl = cast<OpaqueTypeDecl>(opaqueTypeOrError.get ());
5183
- auto subs = MF.getSubstitutionMap (subsID);
5186
+ auto subsOrError = MF.getSubstitutionMapChecked (subsID);
5187
+ if (!subsOrError)
5188
+ return subsOrError.takeError ();
5184
5189
5185
- return OpaqueTypeArchetypeType::get (opaqueDecl, subs );
5190
+ return OpaqueTypeArchetypeType::get (opaqueDecl, subsOrError. get () );
5186
5191
}
5187
5192
5188
5193
Expected<Type> deserializeNestedArchetypeType (ArrayRef<uint64_t > scratch,
@@ -5317,8 +5322,11 @@ class TypeDeserializer {
5317
5322
if (!layout)
5318
5323
return nullptr ;
5319
5324
5320
- auto subMap = MF.getSubstitutionMap (subMapID);
5321
- return SILBoxType::get (ctx, layout, subMap);
5325
+ auto subMapOrError = MF.getSubstitutionMapChecked (subMapID);
5326
+ if (!subMapOrError)
5327
+ return subMapOrError.takeError ();
5328
+
5329
+ return SILBoxType::get (ctx, layout, subMapOrError.get ());
5322
5330
}
5323
5331
5324
5332
Expected<Type> deserializeSILFunctionType (ArrayRef<uint64_t > scratch,
@@ -5503,16 +5511,19 @@ class TypeDeserializer {
5503
5511
5504
5512
GenericSignature invocationSig =
5505
5513
MF.getGenericSignature (rawInvocationGenericSig);
5506
- SubstitutionMap invocationSubs =
5507
- MF.getSubstitutionMap (rawInvocationSubs).getCanonical ();
5508
- SubstitutionMap patternSubs =
5509
- MF.getSubstitutionMap (rawPatternSubs).getCanonical ();
5514
+ auto invocationSubsOrErr = MF.getSubstitutionMapChecked (rawInvocationSubs);
5515
+ if (!invocationSubsOrErr)
5516
+ return invocationSubsOrErr.takeError ();
5517
+ auto patternSubsOrErr = MF.getSubstitutionMapChecked (rawPatternSubs);
5518
+ if (!patternSubsOrErr)
5519
+ return patternSubsOrErr.takeError ();
5510
5520
5511
5521
return SILFunctionType::get (invocationSig, extInfo, coroutineKind.getValue (),
5512
5522
calleeConvention.getValue (),
5513
5523
allParams, allYields, allResults,
5514
5524
errorResult,
5515
- patternSubs, invocationSubs,
5525
+ patternSubsOrErr.get ().getCanonical (),
5526
+ invocationSubsOrErr.get ().getCanonical (),
5516
5527
ctx, witnessMethodConformance);
5517
5528
}
5518
5529
0 commit comments