PartialApplyForwarders can apparently have no children in some cases,
so avoid calling mangleSingleChildNode() if that happens in order to avoid
a crash.
rdar://63678141
The Demangler can wrap types in a Node::Kind::Type node; these need to be
handled by following the node's first child pointer. Failing to do this led to
a crash or assertion failure in some cases.
rdar://63678171
The Demangler can sometimes output ArgumentTuples containing a single argument
without placing that argument inside a Tuple node. OldRemangler failed to take
account of this and either crashed or failed with an assertion failure depending
on whether assertions were enabled or not.
rdar://63678072
The remangler for the Objective-C runtime was dropping generic arguments
of extension contents, leading to collisions with @objc class names.
Include the generic arguments of extensions.
Fixes rdar://problem/45956357.
To get this to work, delay some "cleanup" work in the
demangler. For example, we now preserve in the tree
whether something was mangled as an allocating
initializer, and we only special-case the class vs.
non-class cases in the pretty printer.
Also fixes a number of remangling bugs, of course.
Swift SVN r24534