Make DynamicSelf into its own special type node.

Making DynamicSelf its own special type node makes it easier to opt-in
to the behavior we want rather than opting out of the behavior we
don't want. Some things already work better with this representation,
such as mangling and overriding; others are more broken, such as the
handling of DynamicSelf within generic classes and the lookup of the
DynamicSelf type.


Swift SVN r13141
This commit is contained in:
Doug Gregor
2014-01-30 05:36:20 +00:00
parent 68290c72e3
commit 030770a8c2
26 changed files with 247 additions and 107 deletions

View File

@@ -392,6 +392,11 @@ namespace decls_block {
// Trailed by the nested types record.
>;
using DynamicSelfTypeLayout = BCRecordLayout<
DYNAMIC_SELF_TYPE,
TypeIDField // self type
>;
using ArchetypeNestedTypeNamesLayout = BCRecordLayout<
ARCHETYPE_NESTED_TYPE_NAMES,
BCArray<IdentifierIDField>
@@ -621,6 +626,7 @@ namespace decls_block {
BCFixed<1>, // IBAction?
BCFixed<1>, // transparent?
BCFixed<1>, // mutating?
BCFixed<1>, // has dynamic self?
BCFixed<1>, // optional?
BCVBR<5>, // number of parameter patterns
TypeIDField, // type (signature)