|
1 | 1 | // RUN: %empty-directory(%t)
|
| 2 | +// RUN: split-file %s %t |
2 | 3 |
|
3 | 4 | /// Do not print package-name for public or private interfaces
|
4 |
| -// RUN: %target-build-swift -emit-module %s -I %t \ |
| 5 | +// RUN: %target-build-swift -emit-module %t/Bar.swift -I %t \ |
5 | 6 | // RUN: -module-name Bar -package-name foopkg \
|
6 | 7 | // RUN: -enable-library-evolution -swift-version 6 \
|
7 | 8 | // RUN: -package-name barpkg \
|
|
20 | 21 | // CHECK-PRIVATE-NOT: -package-name barpkg
|
21 | 22 | // CHECK-PACKAGE-NOT: -package-name foopkg
|
22 | 23 |
|
23 |
| -// CHECK-PUBLIC: -enable-library-evolution -swift-version 6 -disable-print-package-name-for-non-package-interface -module-name Bar |
24 |
| -// CHECK-PRIVATE: -enable-library-evolution -swift-version 6 -disable-print-package-name-for-non-package-interface -module-name Bar |
25 |
| -// CHECK-PACKAGE: -enable-library-evolution -swift-version 6 -disable-print-package-name-for-non-package-interface -module-name Bar -package-name barpkg |
| 24 | +// CHECK-PUBLIC: -enable-library-evolution -swift-version 6 -module-name Bar |
| 25 | +// CHECK-PRIVATE: -enable-library-evolution -swift-version 6 -module-name Bar |
| 26 | +// CHECK-PACKAGE: -enable-library-evolution -swift-version 6 -module-name Bar -package-name barpkg |
26 | 27 |
|
27 | 28 | /// Verify building modules from non-package interfaces succeeds without the package-name flag.
|
28 | 29 | // RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
| 30 | +// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -verify |
| 31 | +// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -verify |
| 32 | + |
29 | 33 | // RUN: rm -rf %t/Bar.swiftmodule
|
30 | 34 | // RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.private.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
| 35 | +// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -verify |
| 36 | +// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -verify |
| 37 | + |
31 | 38 | // RUN: rm -rf %t/Bar.swiftmodule
|
32 | 39 | // RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.package.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
| 40 | +// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -experimental-package-interface-load -verify |
33 | 41 |
|
34 | 42 | // RUN: rm -rf %t/Bar.swiftmodule
|
35 | 43 | // RUN: rm -rf %t/Bar.swiftinterface
|
36 | 44 | // RUN: rm -rf %t/Bar.private.swiftinterface
|
37 | 45 | // RUN: rm -rf %t/Bar.package.swiftinterface
|
38 | 46 |
|
39 | 47 | /// By default, -package-name is printed in all interfaces.
|
40 |
| -// RUN: %target-build-swift -emit-module %s -I %t \ |
| 48 | +// RUN: %target-build-swift -emit-module %t/Bar.swift -I %t \ |
41 | 49 | // RUN: -module-name Bar -package-name barpkg \
|
42 | 50 | // RUN: -enable-library-evolution -swift-version 6 \
|
43 | 51 | // RUN: -emit-module-interface-path %t/Bar.swiftinterface \
|
|
52 | 60 |
|
53 | 61 | /// Building modules from non-package interfaces with package-name (default mode) should succeed.
|
54 | 62 | // RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
| 63 | +// RUN: %target-swift-frontend -typecheck %t/ExpectFail.swift -I %t -package-name barpkg -verify |
| 64 | + |
55 | 65 | // RUN: rm -rf %t/Bar.swiftmodule
|
56 | 66 | // RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.private.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
| 67 | +// RUN: %target-swift-frontend -typecheck %t/ExpectFail.swift -I %t -package-name barpkg -verify |
| 68 | + |
57 | 69 | // RUN: rm -rf %t/Bar.swiftmodule
|
58 | 70 | // RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.package.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
|
| 71 | +// RUN: %target-swift-frontend -typecheck %t/Use.swift -I %t -package-name barpkg -experimental-package-interface-load -verify |
59 | 72 |
|
| 73 | +//--- Bar.swift |
60 | 74 | public struct PubStruct {}
|
61 | 75 | @_spi(bar) public struct SPIStruct {}
|
62 | 76 | package struct PkgStruct {}
|
| 77 | + |
| 78 | +@usableFromInline |
| 79 | +package struct UfiPkgStruct { |
| 80 | + @usableFromInline |
| 81 | + package var ufiPkgVar: PubStruct |
| 82 | + |
| 83 | + package var pkgVar: PubStruct |
| 84 | + |
| 85 | + @usableFromInline |
| 86 | + package init(_ x: PubStruct, _ y: PubStruct) { |
| 87 | + ufiPkgVar = x |
| 88 | + pkgVar = y |
| 89 | + } |
| 90 | +} |
| 91 | + |
| 92 | + |
| 93 | +//--- Use.swift |
| 94 | +import Bar |
| 95 | + |
| 96 | +func use(_ arg: PubStruct) -> PubStruct { |
| 97 | + return UfiPkgStruct(arg, arg).ufiPkgVar |
| 98 | +} |
| 99 | + |
| 100 | +//--- ExpectFail.swift |
| 101 | +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}} |
| 102 | + |
| 103 | +func use(_ arg: PubStruct) -> PubStruct { |
| 104 | + return UfiPkgStruct(arg, arg).ufiPkgVar |
| 105 | +} |
0 commit comments