diff --git a/lib/PrintAsObjC/PrintAsObjC.cpp b/lib/PrintAsObjC/PrintAsObjC.cpp index 0f5b0500270cd..98a7ee2ecf37b 100644 --- a/lib/PrintAsObjC/PrintAsObjC.cpp +++ b/lib/PrintAsObjC/PrintAsObjC.cpp @@ -2014,10 +2014,12 @@ class ReferencedTypeFinder : public TypeVisitor { } void visitNameAliasType(NameAliasType *aliasTy) { - if (aliasTy->getDecl()->hasClangNode()) + if (aliasTy->getDecl()->hasClangNode() && + !aliasTy->getDecl()->isCompatibilityAlias()) { Callback(*this, aliasTy->getDecl()); - else + } else { visit(aliasTy->getSinglyDesugaredType()); + } } void visitParenType(ParenType *parenTy) { diff --git a/test/PrintAsObjC/versioned.swift b/test/PrintAsObjC/versioned.swift index 7f3928912dc64..f5ae66b41bd76 100644 --- a/test/PrintAsObjC/versioned.swift +++ b/test/PrintAsObjC/versioned.swift @@ -24,6 +24,9 @@ import VersionedFMWK // CHECK-NEXT: - (nullable instancetype)initFormerlyFailableValue:(NSInteger)value OBJC_DESIGNATED_INITIALIZER; } // CHECK-NEXT: @end +// Make sure we use forward declarations like we would for non-versioned names. +// CHECK: @class InnerClass; + // CHECK-LABEL: @interface UsesNestedClass @objc class UsesNestedClass : NSObject { // CHECK-NEXT: - (InnerClass * _Nullable)foo SWIFT_WARN_UNUSED_RESULT;