[Mangling/ABI] NFC: Fix Demangler tests to reflect label mangling changes

This commit is contained in:
Pavel Yaskevich
2017-12-16 22:28:40 -08:00
parent f60dc1c6ca
commit 5a76f50db0
3 changed files with 41 additions and 32 deletions

View File

@@ -544,12 +544,11 @@ private:
}
NodePointer getChildIf(NodePointer Node, Node::Kind Kind) {
const auto &iter = *Node;
auto result =
std::find_if(iter.begin(), iter.end(), [&](NodePointer child) {
std::find_if(Node->begin(), Node->end(), [&](NodePointer child) {
return child->getKind() == Kind;
});
return result == iter.end() ? nullptr : *result;
return result != Node->end() ? *result : nullptr;
}
void printFunctionParameters(NodePointer LabelList, NodePointer ParameterType,
@@ -588,10 +587,15 @@ private:
[&](NodePointer Param) {
assert(Param->getKind() == Node::Kind::TupleElement);
if (hasLabels)
if (hasLabels) {
Printer << getLabelFor(Param, ParamIndex) << ':';
else if (!showTypes)
Printer << "_:";
} else if (!showTypes) {
if (auto Label = getChildIf(Param,
Node::Kind::TupleElementName))
Printer << Label->getText() << ":";
else
Printer << "_:";
}
if (hasLabels && showTypes)
Printer << ' ';
@@ -1904,7 +1908,12 @@ printEntity(NodePointer Entity, bool asPrefixContext, TypePrinting TypePr,
if (!OverwriteName.empty()) {
Printer << OverwriteName;
} else {
print(Entity->getChild(1));
auto Name = Entity->getChild(1);
if (Name->getKind() != Node::Kind::PrivateDeclName)
print(Name);
if (auto PrivateName = getChildIf(Entity, Node::Kind::PrivateDeclName))
print(PrivateName);
}
if (Printer.getStringRef().size() != CurrentPos && !ExtraName.empty())
Printer << '.';