summaryrefslogtreecommitdiffstats
path: root/tests/ui/stability-attribute/stable-in-unstable.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/stability-attribute/stable-in-unstable.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/stability-attribute/stable-in-unstable.rs')
-rw-r--r--tests/ui/stability-attribute/stable-in-unstable.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/ui/stability-attribute/stable-in-unstable.rs b/tests/ui/stability-attribute/stable-in-unstable.rs
new file mode 100644
index 000000000..226367c39
--- /dev/null
+++ b/tests/ui/stability-attribute/stable-in-unstable.rs
@@ -0,0 +1,54 @@
+// This test is meant to test that we can have a stable item in an unstable module, and that
+// calling that item through the unstable module is unstable, but that re-exporting it from another
+// crate in a stable module is fine.
+//
+// This is necessary to support moving items from `std` into `core` or `alloc` unstably while still
+// exporting the original stable interface in `std`, such as moving `Error` into `core`.
+//
+// aux-build:stable-in-unstable-core.rs
+// aux-build:stable-in-unstable-std.rs
+#![crate_type = "lib"]
+
+extern crate stable_in_unstable_core;
+extern crate stable_in_unstable_std;
+
+mod isolated1 {
+ use stable_in_unstable_core::new_unstable_module; //~ ERROR use of unstable library feature 'unstable_test_feature'
+ use stable_in_unstable_core::new_unstable_module::OldTrait; //~ ERROR use of unstable library feature 'unstable_test_feature'
+}
+
+mod isolated2 {
+ use stable_in_unstable_std::old_stable_module::OldTrait;
+
+ struct LocalType;
+
+ impl OldTrait for LocalType {}
+}
+
+mod isolated3 {
+ use stable_in_unstable_core::new_unstable_module::OldTrait; //~ ERROR use of unstable library feature 'unstable_test_feature'
+
+ struct LocalType;
+
+ impl OldTrait for LocalType {}
+}
+
+mod isolated4 {
+ struct LocalType;
+
+ impl stable_in_unstable_core::new_unstable_module::OldTrait for LocalType {} //~ ERROR use of unstable library feature 'unstable_test_feature'
+}
+
+mod isolated5 {
+ struct LocalType;
+
+ impl stable_in_unstable_std::old_stable_module::OldTrait for LocalType {}
+}
+
+mod isolated6 {
+ use stable_in_unstable_core::new_unstable_module::{OldTrait}; //~ ERROR use of unstable library feature 'unstable_test_feature'
+}
+
+mod isolated7 {
+ use stable_in_unstable_core::new_unstable_module::*; //~ ERROR use of unstable library feature 'unstable_test_feature'
+}