This "fixes" two issues:
- The name of a non-public typealias would leak into the public
interface if the extension had any public members.
- A common pattern of defining a platform-specific typealias for an
imported class and then extending that type would lead to
circularity when trying to deserialize the typealias. We /shouldn't/
be loading the extension at that point, but fixing that would be
much harder.
The "right" answer is to (a) check that the typealias is public if the
extension has any public members, and (b) somehow ensure there is no
circularity issue (either by not importing the extension as a result
of importing the typealias, or by the extension being able to set its
sugared base type later).
rdar://problem/29694978