Files
swift-mirror/test/ModuleInterface/empty-extension.swift
2021-02-02 13:43:38 -08:00

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 NormalImportedType
extension ExportedType : PublicProto {}
// CHECK: extension ExportedType
extension NormalImportedType {
#if os(macOS)
public func funcForThisOS() {};
#endif
}
// CHECK: funcForThisOS
#endif