[ABI] Mangling for default associated conformance accessors.

Default associated conformance accessors will be used in default
witness tables to fill in associated conformances for defaulted
associated types. Add (de|re|)mangling support for them and make them
linking entities in IRGen.
This commit is contained in:
Doug Gregor
2018-09-17 22:45:15 -07:00
parent d076e41f32
commit b71bef1e42
10 changed files with 72 additions and 2 deletions

View File

@@ -323,6 +323,7 @@ private:
case Node::Kind::DeclContext:
case Node::Kind::DefaultArgumentInitializer:
case Node::Kind::DefaultAssociatedTypeMetadataAccessor:
case Node::Kind::DefaultAssociatedConformanceAccessor:
case Node::Kind::DependentAssociatedTypeRef:
case Node::Kind::DependentGenericSignature:
case Node::Kind::DependentGenericParamCount:
@@ -1564,6 +1565,14 @@ NodePointer NodePrinter::print(NodePointer Node, bool asPrefixContext) {
Printer << ": ";
print(Node->getChild(2));
return nullptr;
case Node::Kind::DefaultAssociatedConformanceAccessor:
Printer << "default associated conformance accessor for ";
print(Node->getChild(0));
Printer << ".";
print(Node->getChild(1));
Printer << ": ";
print(Node->getChild(2));
return nullptr;
case Node::Kind::AssociatedTypeDescriptor:
Printer << "associated type descriptor for ";
print(Node->getChild(0));