mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
58 lines
2.2 KiB
Swift
58 lines
2.2 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: split-file %s %t
|
|
|
|
// RUN: %target-swift-frontend -emit-module %t/Lib.swift \
|
|
// RUN: -module-name LibBinary -swift-version 5 -I %t \
|
|
// RUN: -package-name libPkg \
|
|
// RUN: -emit-module-path %t/LibBinary.swiftmodule
|
|
|
|
// RUN: %target-swift-frontend -typecheck %t/ClientLoadBinary.swift -package-name libPkg -I %t -verify
|
|
|
|
// RUN: %target-swift-frontend -emit-module %t/Lib.swift \
|
|
// RUN: -module-name LibInterface -swift-version 5 -I %t \
|
|
// RUN: -package-name libPkg \
|
|
// RUN: -enable-library-evolution \
|
|
// RUN: -emit-module-path %t/LibBinary.swiftmodule \
|
|
// RUN: -emit-module-interface-path %t/LibInterface.swiftinterface \
|
|
// RUN: -emit-private-module-interface-path %t/LibInterface.private.swiftinterface
|
|
|
|
// RUN: %target-swift-typecheck-module-from-interface(%t/LibInterface.swiftinterface) -I %t
|
|
// RUN: %FileCheck %s --check-prefix=CHECK-PUBLIC < %t/LibInterface.swiftinterface
|
|
// CHECK-PUBLIC: -module-name LibInterface
|
|
// CHECK-PUBLIC: -package-name
|
|
|
|
// RUN: %target-swift-typecheck-module-from-interface(%t/LibInterface.private.swiftinterface) -module-name LibInterface -I %t
|
|
// RUN: %FileCheck %s --check-prefix=CHECK-PRIVATE < %t/LibInterface.private.swiftinterface
|
|
// CHECK-PRIVATE: -package-name libPkg
|
|
|
|
// RUN: not %target-swift-frontend -typecheck %t/ClientLoadInterface.swift -package-name otherPkg -I %t 2> %t/resultX.output
|
|
// RUN: %FileCheck %s -check-prefix CHECK-X < %t/resultX.output
|
|
// CHECK-X: error: cannot find 'packageLog' in scope
|
|
|
|
// RUN: not %target-swift-frontend -typecheck %t/ClientLoadInterface.swift -package-name libPkg -I %t 2> %t/resultY.output
|
|
// RUN: %FileCheck %s -check-prefix CHECK-Y < %t/resultY.output
|
|
// CHECK-Y: error: module 'LibInterface' is in package 'libPkg' but was built from a non-package interface; modules of the same package can only be loaded if built from source or package interface: {{.*}}LibInterface.private.swiftinterface
|
|
|
|
|
|
//--- Lib.swift
|
|
public func publicLog(_ level: Int) {}
|
|
package func packageLog(_ level: Int) {}
|
|
func internalLog(_ level: Int) {}
|
|
|
|
|
|
//--- ClientLoadInterface.swift
|
|
import LibInterface
|
|
|
|
func someFunc() {
|
|
publicLog(1)
|
|
packageLog(2)
|
|
}
|
|
|
|
//--- ClientLoadBinary.swift
|
|
import LibBinary
|
|
|
|
func someFunc() {
|
|
publicLog(1)
|
|
packageLog(2)
|
|
}
|