[serialization] Add support for protocol compositions.

Swift SVN r5964
This commit is contained in:
Jordan Rose
2013-07-02 21:56:43 +00:00
parent cc92da302d
commit 45fc3672f4
3 changed files with 35 additions and 2 deletions

View File

@@ -923,6 +923,20 @@ Type ModuleFile::getType(TypeID TID) {
break;
}
case decls_block::PROTOCOL_COMPOSITION_TYPE: {
ArrayRef<uint64_t> rawProtocolIDs;
decls_block::ProtocolCompositionTypeLayout::readRecord(scratch,
rawProtocolIDs);
SmallVector<Type, 4> protocols;
for (TypeID protoID : rawProtocolIDs)
protocols.push_back(getType(protoID));
auto composition = ProtocolCompositionType::get(ctx, protocols);
typeOrOffset = composition;
break;
}
default:
// We don't know how to deserialize this kind of type.
error();