This change removes the -emit-cxx-header option, and adds a new -emit-clang-header-path option instead. It's aliased to -emit-objc-header-path for now, but in the future, -emit-objc-header-path will alias to it. After this change Swift can start emitting a single header file that can be expose declarations to C, Objective-C, or C++. For now C++ interface is generated (for all public decls) only when -enable-cxx-interop flag is passed, but that behavior will change once attribute is supported.
protocol types or existential types based on context.
When an id<P> type is the underlying type of a typedef or a generic
constraint, it should be imported as a protocol or composition. Otherwise,
it should be imported as an existential type. This is similar to how type
resolution resolves existential types using TypeResolverContext.