diff options
Diffstat (limited to 'src/test/ui/auxiliary/pub-and-stability.rs')
-rw-r--r-- | src/test/ui/auxiliary/pub-and-stability.rs | 133 |
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 } - } -} |