summaryrefslogtreecommitdiffstats
path: root/src/test/ui/auxiliary/pub-and-stability.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 /src/test/ui/auxiliary/pub-and-stability.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 'src/test/ui/auxiliary/pub-and-stability.rs')
-rw-r--r--src/test/ui/auxiliary/pub-and-stability.rs133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/test/ui/auxiliary/pub-and-stability.rs b/src/test/ui/auxiliary/pub-and-stability.rs
deleted file mode 100644
index ee05a07db..000000000
--- a/src/test/ui/auxiliary/pub-and-stability.rs
+++ /dev/null
@@ -1,133 +0,0 @@
-// This crate attempts to enumerate the various scenarios for how a
-// type can define fields and methods with various visibilities and
-// stabilities.
-//
-// The basic stability pattern in this file has four cases:
-// 1. no stability attribute at all
-// 2. a stable attribute (feature "unit_test")
-// 3. an unstable attribute that unit test declares (feature "unstable_declared")
-// 4. an unstable attribute that unit test fails to declare (feature "unstable_undeclared")
-//
-// This file also covers four kinds of visibility: private,
-// pub(module), pub(crate), and pub.
-//
-// However, since stability attributes can only be observed in
-// cross-crate linkage scenarios, there is little reason to take the
-// cross-product (4 stability cases * 4 visibility cases), because the
-// first three visibility cases cannot be accessed outside this crate,
-// and therefore stability is only relevant when the visibility is pub
-// to the whole universe.
-//
-// (The only reason to do so would be if one were worried about the
-// compiler having some subtle bug where adding a stability attribute
-// introduces a privacy violation. As a way to provide evidence that
-// this is not occurring, I have put stability attributes on some
-// non-pub fields, marked with SILLY below)
-
-#![feature(staged_api)]
-
-#![stable(feature = "unit_test", since = "1.0.0")]
-
-#[stable(feature = "unit_test", since = "1.0.0")]
-pub use m::{Record, Trait, Tuple};
-
-mod m {
- #[derive(Default)]
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub struct Record {
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub a_stable_pub: i32,
- #[unstable(feature = "unstable_declared", issue = "38412")]
- pub a_unstable_declared_pub: i32,
- #[unstable(feature = "unstable_undeclared", issue = "38412")]
- pub a_unstable_undeclared_pub: i32,
- #[unstable(feature = "unstable_undeclared", issue = "38412")] // SILLY
- pub(crate) b_crate: i32,
- #[unstable(feature = "unstable_declared", issue = "38412")] // SILLY
- pub(in m) c_mod: i32,
- #[stable(feature = "unit_test", since = "1.0.0")] // SILLY
- d_priv: i32
- }
-
- #[derive(Default)]
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub struct Tuple(
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub i32,
- #[unstable(feature = "unstable_declared", issue = "38412")]
- pub i32,
- #[unstable(feature = "unstable_undeclared", issue = "38412")]
- pub i32,
-
- pub(crate) i32,
- pub(in m) i32,
- i32);
-
- impl Record {
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub fn new() -> Self { Default::default() }
- }
-
- impl Tuple {
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub fn new() -> Self { Default::default() }
- }
-
-
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub trait Trait {
- #[stable(feature = "unit_test", since = "1.0.0")]
- type Type;
- #[stable(feature = "unit_test", since = "1.0.0")]
- fn stable_trait_method(&self) -> Self::Type;
- #[unstable(feature = "unstable_undeclared", issue = "38412")]
- fn unstable_undeclared_trait_method(&self) -> Self::Type;
- #[unstable(feature = "unstable_declared", issue = "38412")]
- fn unstable_declared_trait_method(&self) -> Self::Type;
- }
-
- #[stable(feature = "unit_test", since = "1.0.0")]
- impl Trait for Record {
- type Type = i32;
- fn stable_trait_method(&self) -> i32 { self.d_priv }
- fn unstable_undeclared_trait_method(&self) -> i32 { self.d_priv }
- fn unstable_declared_trait_method(&self) -> i32 { self.d_priv }
- }
-
- #[stable(feature = "unit_test", since = "1.0.0")]
- impl Trait for Tuple {
- type Type = i32;
- fn stable_trait_method(&self) -> i32 { self.3 }
- fn unstable_undeclared_trait_method(&self) -> i32 { self.3 }
- fn unstable_declared_trait_method(&self) -> i32 { self.3 }
- }
-
- impl Record {
- #[unstable(feature = "unstable_undeclared", issue = "38412")]
- pub fn unstable_undeclared(&self) -> i32 { self.d_priv }
- #[unstable(feature = "unstable_declared", issue = "38412")]
- pub fn unstable_declared(&self) -> i32 { self.d_priv }
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub fn stable(&self) -> i32 { self.d_priv }
-
- #[unstable(feature = "unstable_undeclared", issue = "38412")] // SILLY
- pub(crate) fn pub_crate(&self) -> i32 { self.d_priv }
- #[unstable(feature = "unstable_declared", issue = "38412")] // SILLY
- pub(in m) fn pub_mod(&self) -> i32 { self.d_priv }
- #[stable(feature = "unit_test", since = "1.0.0")] // SILLY
- fn private(&self) -> i32 { self.d_priv }
- }
-
- impl Tuple {
- #[unstable(feature = "unstable_undeclared", issue = "38412")]
- pub fn unstable_undeclared(&self) -> i32 { self.0 }
- #[unstable(feature = "unstable_declared", issue = "38412")]
- pub fn unstable_declared(&self) -> i32 { self.0 }
- #[stable(feature = "unit_test", since = "1.0.0")]
- pub fn stable(&self) -> i32 { self.0 }
-
- pub(crate) fn pub_crate(&self) -> i32 { self.0 }
- pub(in m) fn pub_mod(&self) -> i32 { self.0 }
- fn private(&self) -> i32 { self.0 }
- }
-}