Files
swift-mirror/test/IDE/print_clang_ObjectiveC.swift
Nuri Amari 86c5698780 Implement importing of forward declared objc protocols and interfaces
This modifies the ClangImporter to introduce an opaque placeholder
representation for forward declared Objective-C interfaces and
protocols when imported into Swift.

In the compiler, the new functionality is hidden behind a frontend
flag -enable-import-objc-forward-declarations, and is on by default
for language mode >6.

The feature is disabled entirely in LLDB expression evaluation / Swift
REPL, regardless of language version.
2023-03-07 16:00:16 -08:00

28 lines
1.4 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: %target-swift-ide-test -swift-version 5 -print-module -source-filename %s -module-to-print=ObjectiveC.NSObject -function-definitions=false > %t/ObjectiveC.NSObject.printed.txt
// RUN: %FileCheck -input-file %t/ObjectiveC.NSObject.printed.txt %s
// RUN: %FileCheck -input-file %t/ObjectiveC.NSObject.printed.txt -check-prefix=NEGATIVE -check-prefix=NEGATIVE-WITHOUT-FORWARD-DECLS %s
// RUN: %target-swift-ide-test -print-module -source-filename %s -module-to-print=ObjectiveC.NSObject -function-definitions=false -enable-objc-forward-declarations > %t/ObjectiveC.NSObject.forward-decls.txt
// RUN: %FileCheck -input-file %t/ObjectiveC.NSObject.forward-decls.txt -check-prefix=CHECK -check-prefix=CHECK-WITH-FORWARD-DECLS %s
// RUN: %FileCheck -input-file %t/ObjectiveC.NSObject.forward-decls.txt -check-prefix=NEGATIVE %s
// REQUIRES: objc_interop
// NEGATIVE-WITHOUT-FORWARD-DECLS-NOT: var description
// NEGATIVE-NOT: NSCoder
// CHECK-LABEL: protocol NSObjectProtocol {
// CHECK-DAG: var superclass: AnyClass? { get }
// CHECK-DAG: func zone() -> NSZone
// CHECK-WITH-FORWARD-DECLS-DAG: var description: String { get }
// CHECK: {{^[}]$}}
// CHECK-LABEL: class NSObject : NSObjectProtocol {
// CHECK-DAG: func copy() -> Any
// CHECK-DAG: class func hash() -> Int
// CHECK-WITH-FORWARD-DECLS-DAG: class func description() -> String
// CHECK-WITH-FORWARD-DECLS-DAG: func forwardInvocation(_ anInvocation: NSInvocation!)
// CHECK: {{^[}]$}}