@@ -873,7 +873,11 @@ ProtocolConformanceDeserializer::readInheritedProtocolConformance(
873873 InheritedProtocolConformanceLayout::readRecord (scratch, conformanceID,
874874 conformingTypeID);
875875
876- Type conformingType = MF.getType (conformingTypeID);
876+ auto conformingTypeOrError =
877+ MF.getTypeChecked (conformingTypeID);
878+ if (!conformingTypeOrError)
879+ return conformingTypeOrError.takeError ();
880+ Type conformingType = conformingTypeOrError.get ();
877881
878882 PrettyStackTraceType trace (ctx, " reading inherited conformance for" ,
879883 conformingType);
@@ -3465,7 +3469,10 @@ class DeclDeserializer {
34653469 }
34663470 }
34673471
3468- auto DC = MF.getDeclContext (contextID);
3472+ auto DCOrError = MF.getDeclContextChecked (contextID);
3473+ if (!DCOrError)
3474+ return DCOrError.takeError ();
3475+ auto DC = DCOrError.get ();
34693476 if (declOrOffset.isComplete ())
34703477 return declOrOffset;
34713478
@@ -3806,14 +3813,22 @@ class DeclDeserializer {
38063813 AddAttribute (new (ctx) HasStorageAttr (/* isImplicit:*/ true ));
38073814
38083815 if (opaqueReturnTypeID) {
3816+ auto opaqueReturnType = MF.getDeclChecked (opaqueReturnTypeID);
3817+ if (!opaqueReturnType)
3818+ return opaqueReturnType.takeError ();
3819+
38093820 ctx.evaluator .cacheOutput (
38103821 OpaqueResultTypeRequest{var},
3811- cast<OpaqueTypeDecl>(MF. getDecl (opaqueReturnTypeID )));
3822+ cast<OpaqueTypeDecl>(opaqueReturnType. get ( )));
38123823 }
38133824
38143825 // If this is a lazy property, record its backing storage.
38153826 if (lazyStorageID) {
3816- VarDecl *storage = cast<VarDecl>(MF.getDecl (lazyStorageID));
3827+ auto lazyStorageDecl = MF.getDeclChecked (lazyStorageID);
3828+ if (!lazyStorageDecl)
3829+ return lazyStorageDecl.takeError ();
3830+
3831+ VarDecl *storage = cast<VarDecl>(lazyStorageDecl.get ());
38173832 ctx.evaluator .cacheOutput (
38183833 LazyStoragePropertyRequest{var}, std::move (storage));
38193834 }
0 commit comments