mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
The patch introduces a new setting instead of changing existing settings because the generated interfaces in the IDE have slightly different requirements; the extended type there is unconditionally not printed qualified (even if it is ambiguous). This is likely because the ambiguity heuristic is very weak; it doesn't even do name lookup. Simplifying that logic would be nice, but then we'd need to update a bunch of IDE/print* tests and end up with more more visual clutter in the IDE. Introducing the new setting means we can change the behavior for swiftinterface files without affecting the behavior for IDE interfaces. Fixes rdar://79093752.
66 lines
1.5 KiB
Swift
66 lines
1.5 KiB
Swift
// Test that we don't print extensions to implementation-only imported types.
|
|
|
|
// RUN: %empty-directory(%t)
|
|
|
|
// RUN: %target-swift-frontend -emit-module %s -DIOI_LIB -module-name IOILib -emit-module-path %t/IOILib.swiftmodule
|
|
// RUN: %target-swift-frontend -emit-module %s -DEXPORTED_LIB -module-name IndirectLib -emit-module-path %t/IndirectLib.swiftmodule -I %t
|
|
// RUN: %target-swift-frontend -emit-module %s -DLIB -module-name Lib -emit-module-path %t/Lib.swiftmodule -I %t
|
|
|
|
// RUN: %target-swift-frontend-typecheck -emit-module-interface-path %t/out.swiftinterface %s -I %t -swift-version 5 -enable-library-evolution
|
|
// RUN: %FileCheck %s < %t/out.swiftinterface
|
|
|
|
// REQUIRES: OS=macosx
|
|
|
|
#if IOI_LIB
|
|
|
|
public struct IOIImportedType {
|
|
public func foo() {}
|
|
}
|
|
|
|
#elseif EXPORTED_LIB
|
|
|
|
public struct ExportedType {
|
|
public func foo() {}
|
|
}
|
|
|
|
#elseif LIB
|
|
|
|
@_exported import IndirectLib
|
|
|
|
public struct NormalImportedType {
|
|
public func foo() {}
|
|
}
|
|
|
|
#else // Client
|
|
|
|
import Lib
|
|
@_implementationOnly import IOILib
|
|
|
|
public protocol PublicProto {
|
|
func foo()
|
|
}
|
|
extension IOIImportedType : PublicProto {}
|
|
|
|
extension IOIImportedType {
|
|
#if os(iOS)
|
|
public func funcForAnotherOS() {}
|
|
#endif
|
|
}
|
|
// CHECK-NOT: IOIImportedType
|
|
// CHECK-NOT: funcForAnotherOS
|
|
|
|
extension NormalImportedType : PublicProto {}
|
|
// CHECK: extension Lib.NormalImportedType
|
|
|
|
extension ExportedType : PublicProto {}
|
|
// CHECK: extension IndirectLib.ExportedType
|
|
|
|
extension NormalImportedType {
|
|
#if os(macOS)
|
|
public func funcForThisOS() {};
|
|
#endif
|
|
}
|
|
// CHECK: funcForThisOS
|
|
|
|
#endif
|