Store type, protocol, and conforming decl in ProtocolConformances.

This makes ProtocolConformances fully self-identifying so that a ProtocolConformance* pointer alone is enough to identify a conformance as a link entity.

We currently lose the conforming decl during deserialization because trying to deserialize a reference to an ExtensionDecl asserts out. I'll bug Jordan about that.

Swift SVN r6735
This commit is contained in:
Joe Groff
2013-07-30 01:26:26 +00:00
parent 2306563aa2
commit 70dbbc806b
8 changed files with 74 additions and 28 deletions

View File

@@ -640,6 +640,7 @@ namespace decls_block {
using ProtocolConformanceLayout = BCRecordLayout<
PROTOCOL_CONFORMANCE,
DeclIDField, // the protocol
DeclIDField, // the conforming type or extension decl
BCVBR<5>, // value mapping count
BCVBR<5>, // type mapping count
BCVBR<5>, // inherited conformances count