Skip to content

Commit 7d7c1fc

Browse files
committed
Deserialization: handle bogus type in BuiltinConfs
This appears to be a code path that wasn't previously stressed when deserializing a bogus module, but now it is with NoncopyableGenerics, as Copyable is often emitted as a builtin conformance.
1 parent 6098643 commit 7d7c1fc

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

lib/Serialization/Deserialization.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -893,7 +893,9 @@ ProtocolConformanceDeserializer::readBuiltinProtocolConformance(
893893
BuiltinProtocolConformanceLayout::readRecord(scratch, conformingTypeID,
894894
protoID, builtinConformanceKind);
895895

896-
Type conformingType = MF.getType(conformingTypeID);
896+
auto conformingType = MF.getTypeChecked(conformingTypeID);
897+
if (!conformingType)
898+
return conformingType.takeError();
897899

898900
auto decl = MF.getDeclChecked(protoID);
899901
if (!decl)
@@ -902,7 +904,7 @@ ProtocolConformanceDeserializer::readBuiltinProtocolConformance(
902904
auto proto = cast<ProtocolDecl>(decl.get());
903905

904906
auto conformance = ctx.getBuiltinConformance(
905-
conformingType, proto,
907+
conformingType.get(), proto,
906908
static_cast<BuiltinConformanceKind>(builtinConformanceKind));
907909
return conformance;
908910
}

0 commit comments

Comments
 (0)