[AST] Track overriding relationship among associated types.

When an associated type declaration “overrides” (restates) an associated
type from a protocol it inherits, note that it overrides that declaration.
SourceKit now reports overrides of associated types.
This commit is contained in:
Doug Gregor
2017-09-27 09:10:37 -07:00
parent 04b87125bf
commit 15386fa0bf
9 changed files with 236 additions and 9 deletions

View File

@@ -54,7 +54,7 @@ const uint16_t VERSION_MAJOR = 0;
/// in source control, you should also update the comment to briefly
/// describe what change you made. The content of this comment isn't important;
/// it just ensures a conflict if two people change the module format.
const uint16_t VERSION_MINOR = 368; // Last change: objc_method, objc_super_method
const uint16_t VERSION_MINOR = 369; // Last change: associated type overrides
using DeclID = PointerEmbeddedInt<unsigned, 31>;
using DeclIDField = BCFixed<31>;
@@ -815,10 +815,11 @@ namespace decls_block {
using AssociatedTypeDeclLayout = BCRecordLayout<
ASSOCIATED_TYPE_DECL,
IdentifierIDField, // name
DeclContextIDField,// context decl
TypeIDField, // default definition
BCFixed<1> // implicit flag
IdentifierIDField, // name
DeclContextIDField, // context decl
TypeIDField, // default definition
BCFixed<1>, // implicit flag
BCArray<DeclIDField> // overridden associated types
>;
using StructLayout = BCRecordLayout<