mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
106 lines
4.7 KiB
Swift
106 lines
4.7 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: split-file %s %t
|
|
|
|
/// Do not print package-name for public or private interfaces
|
|
// RUN: %target-build-swift -emit-module %t/Bar.swift -I %t \
|
|
// RUN: -module-name Bar -package-name foopkg \
|
|
// RUN: -enable-library-evolution -swift-version 6 \
|
|
// RUN: -package-name barpkg \
|
|
// RUN: -Xfrontend -disable-print-package-name-for-non-package-interface \
|
|
// RUN: -emit-module-interface-path %t/Bar.swiftinterface \
|
|
// RUN: -emit-private-module-interface-path %t/Bar.private.swiftinterface \
|
|
// RUN: -emit-package-module-interface-path %t/Bar.package.swiftinterface
|
|
|
|
// RUN: %FileCheck %s --check-prefix=CHECK-PUBLIC < %t/Bar.swiftinterface
|
|
// RUN: %FileCheck %s --check-prefix=CHECK-PRIVATE < %t/Bar.private.swiftinterface
|
|
// RUN: %FileCheck %s --check-prefix=CHECK-PACKAGE < %t/Bar.package.swiftinterface
|
|
|
|
// CHECK-PUBLIC-NOT: -package-name foopkg
|
|
// CHECK-PUBLIC-NOT: -package-name barpkg
|
|
// CHECK-PRIVATE-NOT: -package-name foopkg
|
|
// CHECK-PRIVATE-NOT: -package-name barpkg
|
|
// CHECK-PACKAGE-NOT: -package-name foopkg
|
|
|
|
// CHECK-PUBLIC: -enable-library-evolution -swift-version 6 -module-name Bar
|
|
// CHECK-PRIVATE: -enable-library-evolution -swift-version 6 -module-name Bar
|
|
// CHECK-PACKAGE: -enable-library-evolution -swift-version 6 -module-name Bar -package-name barpkg
|
|
|
|
/// Verify building modules from non-package interfaces succeeds without the package-name flag.
|
|
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
|
// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -verify
|
|
// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -verify
|
|
|
|
// RUN: rm -rf %t/Bar.swiftmodule
|
|
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.private.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
|
// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -verify
|
|
// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -verify
|
|
|
|
// RUN: rm -rf %t/Bar.swiftmodule
|
|
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.package.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
|
// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -experimental-package-interface-load -verify
|
|
|
|
// RUN: rm -rf %t/Bar.swiftmodule
|
|
// RUN: rm -rf %t/Bar.swiftinterface
|
|
// RUN: rm -rf %t/Bar.private.swiftinterface
|
|
// RUN: rm -rf %t/Bar.package.swiftinterface
|
|
|
|
/// By default, -package-name is printed in all interfaces.
|
|
// RUN: %target-build-swift -emit-module %t/Bar.swift -I %t \
|
|
// RUN: -module-name Bar -package-name barpkg \
|
|
// RUN: -enable-library-evolution -swift-version 6 \
|
|
// RUN: -emit-module-interface-path %t/Bar.swiftinterface \
|
|
// RUN: -emit-private-module-interface-path %t/Bar.private.swiftinterface \
|
|
// RUN: -emit-package-module-interface-path %t/Bar.package.swiftinterface
|
|
|
|
// RUN: %FileCheck %s < %t/Bar.swiftinterface
|
|
// RUN: %FileCheck %s < %t/Bar.private.swiftinterface
|
|
// RUN: %FileCheck %s < %t/Bar.package.swiftinterface
|
|
|
|
// CHECK: -enable-library-evolution -package-name barpkg -swift-version 6 -module-name Bar
|
|
|
|
/// Building modules from non-package interfaces with package-name (default mode) should succeed.
|
|
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
|
// RUN: %target-swift-frontend -typecheck %t/ExpectFail.swift -I %t -package-name barpkg -verify
|
|
|
|
// RUN: rm -rf %t/Bar.swiftmodule
|
|
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.private.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
|
// RUN: %target-swift-frontend -typecheck %t/ExpectFail.swift -I %t -package-name barpkg -verify
|
|
|
|
// RUN: rm -rf %t/Bar.swiftmodule
|
|
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.package.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
|
// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -experimental-package-interface-load -verify
|
|
|
|
//--- Bar.swift
|
|
public struct PubStruct {}
|
|
@_spi(bar) public struct SPIStruct {}
|
|
package struct PkgStruct {}
|
|
|
|
@usableFromInline
|
|
package struct UfiPkgStruct {
|
|
@usableFromInline
|
|
package var ufiPkgVar: PubStruct
|
|
|
|
package var pkgVar: PubStruct
|
|
|
|
@usableFromInline
|
|
package init(_ x: PubStruct, _ y: PubStruct) {
|
|
ufiPkgVar = x
|
|
pkgVar = y
|
|
}
|
|
}
|
|
|
|
|
|
//--- Use.swift
|
|
import Bar
|
|
|
|
func use(_ arg: PubStruct) -> PubStruct {
|
|
return UfiPkgStruct(arg, arg).ufiPkgVar
|
|
}
|
|
|
|
//--- ExpectFail.swift
|
|
import Bar // expected-error {{module 'Bar' is in package 'barpkg' but was built from a non-package interface; modules of the same package can only be loaded if built from source or package interface}}
|
|
|
|
func use(_ arg: PubStruct) -> PubStruct {
|
|
return UfiPkgStruct(arg, arg).ufiPkgVar
|
|
}
|