(De)Mangling of layout constraints and requirements.

This commit is contained in:
Roman Levenstein
2017-01-11 14:51:51 -08:00
parent 84f21a81be
commit 8b6a0315a4
12 changed files with 371 additions and 35 deletions

View File

@@ -1340,6 +1340,26 @@ void Remangler::mangleDependentGenericSameTypeRequirement(Node *node) {
mangle(node->getChild(1).get());
}
void Remangler::mangleDependentGenericLayoutRequirement(Node *node) {
mangleConstrainedType(node->getChild(0).get());
Out << 'l';
auto id = node->getChild(1)->getText();
auto size = -1;
if (node->getNumChildren() > 2) {
size = node->getChild(2)->getIndex();
}
int alignment = -1;
if (node->getNumChildren() > 3) {
alignment = node->getChild(3)->getIndex();
}
Out << id;
if (size >= 0)
Out << size;
if (alignment >= 0) {
Out << "_" << alignment;
}
}
void Remangler::mangleConstrainedType(Node *node) {
if (node->getFirstChild()->getKind()
== Node::Kind::DependentGenericParamType) {