Files
swift-mirror/test/ModuleInterface/access-level-import-swiftinterfaces.swift

238 lines
10 KiB
Swift

/// Check that only public imports are printed in modules interfaces,
/// package imports and below are not.
// REQUIRES: asserts
// RUN: %empty-directory(%t)
// RUN: split-file %s %t
/// Build the libraries.
// RUN: %target-swift-frontend -emit-module %t/PublicLib.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/PackageLib.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/InternalLib.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/FileprivateLib.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/PrivateLib.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibX.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibY.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibZ.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibS.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibT.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibU.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
// RUN: %target-swift-frontend -emit-module %t/LibV.swift -o %t \
// RUN: -swift-version 5 -enable-library-evolution
/// Build client and generate swiftinterfaces.
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
// RUN: -package-name TestPackage \
// RUN: -enable-library-evolution -swift-version 5 \
// RUN: -emit-module-interface-path %t/Client.swiftinterface \
// RUN: -emit-private-module-interface-path %t/Client.private.swiftinterface \
// RUN: -emit-package-module-interface-path %t/Client.package.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/Client.swiftinterface) -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/Client.private.swiftinterface) -I %t \
// RUN: -module-name Client
// RUN: %target-swift-typecheck-module-from-interface(%t/Client.package.swiftinterface) -I %t \
// RUN: -module-name Client
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5 %s < %t/Client.swiftinterface
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5 %s < %t/Client.private.swiftinterface
// RUN: %FileCheck --check-prefixes=CHECK-5-PKG %s < %t/Client.package.swiftinterface
/// Build a client composed of many files.
// RUN: %target-swift-frontend -typecheck %t/MultiFiles?.swift -I %t \
// RUN: -package-name TestPackage \
// RUN: -experimental-spi-only-imports \
// RUN: -enable-library-evolution -swift-version 5 \
// RUN: -emit-module-interface-path %t/MultiFiles.swiftinterface \
// RUN: -emit-private-module-interface-path %t/MultiFiles.private.swiftinterface \
// RUN: -emit-package-module-interface-path %t/MultiFiles.package.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles.swiftinterface) -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles.private.swiftinterface) -I %t \
// RUN: -module-name MultiFiles
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles.package.swiftinterface) -I %t \
// RUN: -module-name MultiFiles
// RUN: %FileCheck --check-prefixes=CHECK-5-MUL %s < %t/MultiFiles.swiftinterface
// RUN: %FileCheck --check-prefixes=CHECK-5-MUL-PRV %s < %t/MultiFiles.private.swiftinterface
// RUN: %FileCheck --check-prefixes=CHECK-5-MUL-PKG %s < %t/MultiFiles.package.swiftinterface
/// Swift 6 mode.
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
// RUN: -package-name TestPackage -module-name Client_Swift6 \
// RUN: -enable-library-evolution -swift-version 6 \
// RUN: -emit-module-interface-path %t/Client_Swift6.swiftinterface \
// RUN: -emit-private-module-interface-path %t/Client_Swift6.private.swiftinterface \
// RUN: -emit-package-module-interface-path %t/Client_Swift6.package.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_Swift6.swiftinterface) -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_Swift6.private.swiftinterface) -I %t \
// RUN: -module-name Client_Swift6
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_Swift6.package.swiftinterface) -I %t \
// RUN: -module-name Client_Swift6
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6 < %t/Client_Swift6.swiftinterface
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6 < %t/Client_Swift6.private.swiftinterface
// RUN: %FileCheck %s --check-prefixes=CHECK-6-PKG < %t/Client_Swift6.package.swiftinterface
/// Feature flag.
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
// RUN: -package-name TestPackage -module-name Client_FeatureFlag \
// RUN: -enable-library-evolution -swift-version 5 \
// RUN: -emit-module-interface-path %t/Client_FeatureFlag.swiftinterface \
// RUN: -emit-private-module-interface-path %t/Client_FeatureFlag.private.swiftinterface \
// RUN: -emit-package-module-interface-path %t/Client_FeatureFlag.package.swiftinterface \
// RUN: -enable-upcoming-feature InternalImportsByDefault
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_FeatureFlag.swiftinterface) -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_FeatureFlag.private.swiftinterface) -I %t \
// RUN: -module-name Client_FeatureFlag
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_FeatureFlag.package.swiftinterface) -I %t \
// RUN: -module-name Client_FeatureFlag
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6,CHECK-FLAG < %t/Client_FeatureFlag.swiftinterface
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6,CHECK-FLAG < %t/Client_FeatureFlag.private.swiftinterface
// RUN: %FileCheck %s --check-prefixes=CHECK-6-PKG,CHECK-FLAG < %t/Client_FeatureFlag.package.swiftinterface
/// Build a client with multiple files.
// RUN: %target-swift-frontend -typecheck %t/MultiFiles?.swift -I %t \
// RUN: -package-name TestPackage -module-name MultiFiles_Swift6 \
// RUN: -experimental-spi-only-imports \
// RUN: -enable-library-evolution -swift-version 6 \
// RUN: -emit-module-interface-path %t/MultiFiles_Swift6.swiftinterface \
// RUN: -emit-private-module-interface-path %t/MultiFiles_Swift6.private.swiftinterface \
// RUN: -emit-package-module-interface-path %t/MultiFiles_Swift6.package.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles_Swift6.swiftinterface) -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles_Swift6.private.swiftinterface) -I %t \
// RUN: -module-name MultiFiles_Swift6
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles_Swift6.package.swiftinterface) -I %t \
// RUN: -module-name MultiFiles_Swift6
// RUN: %FileCheck --check-prefixes=CHECK-6-MUL %s < %t/MultiFiles_Swift6.swiftinterface
// RUN: %FileCheck --check-prefixes=CHECK-6-MUL-PRV %s < %t/MultiFiles_Swift6.private.swiftinterface
// RUN: %FileCheck --check-prefixes=CHECK-6-MUL-PKG %s < %t/MultiFiles_Swift6.package.swiftinterface
//--- PublicLib.swift
//--- PackageLib.swift
//--- InternalLib.swift
//--- FileprivateLib.swift
//--- PrivateLib.swift
//--- LibX.swift
//--- LibY.swift
//--- LibZ.swift
//--- LibS.swift
//--- LibT.swift
//--- LibU.swift
//--- LibV.swift
//--- Client.swift
// CHECK-5-NOT: public
// CHECK-5-PKG: package import PackageLib
// CHECK-5-PKG: import PublicLib
// CHECK-FLAG: -enable-upcoming-feature InternalImportsByDefault
// CHECK-6: public
// CHECK-6-PKG: package import PackageLib
// CHECK-6-PKG: public import PublicLib
public import PublicLib
// CHECK: PublicLib
package import PackageLib
// CHECK-NOT: PackageLib
internal import InternalLib
// CHECK-NOT: InternalLib
fileprivate import FileprivateLib
// CHECK-NOT: FileprivateLib
private import PrivateLib
// CHECK-NOT: PrivateLib
//--- MultiFilesA.swift
public import PublicLib
package import PackageLib
private import InternalLib
public import LibX
@_exported public import LibY
internal import LibZ
@_spiOnly public import LibS
@_spiOnly public import LibT
@_spi(Lib) public import LibU
@_spi(Lib) public import LibV
//--- MultiFilesB.swift
internal import PublicLib
internal import PackageLib
internal import InternalLib
package import LibX
package import LibY
fileprivate import LibZ
package import LibS
internal import LibT
package import LibU
internal import LibV
// CHECK-5-MUL-NOT: public
// CHECK-5-MUL: import LibU
// CHECK-5-MUL: import LibV
// CHECK-5-MUL: import LibX
// CHECK-5-MUL: @_exported import LibY
// CHECK-5-MUL: import PublicLib
// CHECK-6-MUL: public import LibU
// CHECK-6-MUL: public import LibV
// CHECK-6-MUL: public import LibX
// CHECK-6-MUL: @_exported public import LibY
// CHECK-6-MUL: public import PublicLib
// CHECK-5-MUL-PKG: @_spiOnly import LibS
// CHECK-5-MUL-PKG: @_spiOnly import LibT
// CHECK-5-MUL-PKG: @_spi(Lib) import LibU
// CHECK-5-MUL-PKG: @_spi(Lib) import LibV
// CHECK-5-MUL-PKG: import LibX
// CHECK-5-MUL-PKG: @_exported import LibY
// CHECK-5-MUL-PKG: package import PackageLib
// CHECK-5-MUL-PKG: import PublicLib
// CHECK-6-MUL-PKG: @_spiOnly public import LibS
// CHECK-6-MUL-PKG: @_spiOnly public import LibT
// CHECK-6-MUL-PKG: @_spi(Lib) public import LibU
// CHECK-6-MUL-PKG: @_spi(Lib) public import LibV
// CHECK-6-MUL-PKG: public import LibX
// CHECK-6-MUL-PKG: @_exported public import LibY
// CHECK-6-MUL-PKG: package import PackageLib
// CHECK-6-MUL-PKG: public import PublicLib
// CHECK-5-MUL-PRV: @_spiOnly import LibS
// CHECK-5-MUL-PRV: @_spiOnly import LibT
// CHECK-5-MUL-PRV: @_spi(Lib) import LibU
// CHECK-5-MUL-PRV: @_spi(Lib) import LibV
// CHECK-5-MUL-PRV: import LibX
// CHECK-5-MUL-PRV: @_exported import LibY
// CHECK-5-MUL-PRV: import PublicLib
// CHECK-6-MUL-PRV: @_spiOnly public import LibS
// CHECK-6-MUL-PRV: @_spiOnly public import LibT
// CHECK-6-MUL-PRV: @_spi(Lib) public import LibU
// CHECK-6-MUL-PRV: @_spi(Lib) public import LibV
// CHECK-6-MUL-PRV: public import LibX
// CHECK-6-MUL-PRV: @_exported public import LibY
// CHECK-6-MUL-PRV: public import PublicLib