|
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