@@ -191,6 +191,12 @@ class Remangler {
191
191
return Child;
192
192
}
193
193
194
+ Node *skipType (Node *node) {
195
+ if (node->getKind () == Node::Kind::Type)
196
+ return getSingleChild (node);
197
+ return node;
198
+ }
199
+
194
200
Node *getChildOfType (Node *node) {
195
201
assert (node->getKind () == Node::Kind::Type);
196
202
return getSingleChild (node);
@@ -242,8 +248,7 @@ class Remangler {
242
248
}
243
249
244
250
void manglePureProtocol (Node *Proto) {
245
- if (Proto->getKind () == Node::Kind::Type)
246
- Proto = getSingleChild (Proto, Node::Kind::Protocol);
251
+ Proto = skipType (Proto);
247
252
mangleChildNodes (Proto);
248
253
}
249
254
@@ -461,14 +466,13 @@ void Remangler::mangleArchetype(Node *node) {
461
466
}
462
467
463
468
void Remangler::mangleArgumentTuple (Node *node) {
464
- Node *Ty = getSingleChild (node, Node::Kind::Type);
465
- Node *Child = getSingleChild (Ty);
469
+ Node *Child = skipType (getSingleChild (node));
466
470
if (Child->getKind () == Node::Kind::NonVariadicTuple &&
467
471
Child->getNumChildren () == 0 ) {
468
472
Buffer << ' y' ;
469
473
return ;
470
474
}
471
- mangleSingleChildNode (Ty );
475
+ mangle (Child );
472
476
}
473
477
474
478
void Remangler::mangleAssociatedType (Node *node) {
@@ -1359,7 +1363,7 @@ void Remangler::mangleProtocolConformance(Node *node) {
1359
1363
}
1360
1364
1361
1365
void Remangler::mangleProtocolDescriptor (Node *node) {
1362
- manglePureProtocol (getSingleChild (node, Node::Kind::Type ));
1366
+ manglePureProtocol (getSingleChild (node));
1363
1367
Buffer << " Mp" ;
1364
1368
}
1365
1369
0 commit comments