diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-01-09 00:21:35 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2017-01-29 02:57:14 +0300 |
| commit | 18b96cf286e99ba61ff52fb916463466b2a63a67 (patch) | |
| tree | 1fd7f6c5c7e9e2920a35213b5e19f5b376b3cea5 /src/test | |
| parent | 1491e0425911806f2612f05ee8caf21666447128 (diff) | |
| download | rust-18b96cf286e99ba61ff52fb916463466b2a63a67.tar.gz rust-18b96cf286e99ba61ff52fb916463466b2a63a67.zip | |
Privatize constructors of tuple structs with private fields
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/auxiliary/privacy-struct-ctor.rs | 21 | ||||
| -rw-r--r-- | src/test/compile-fail/privacy-struct-ctor.rs | 42 |
2 files changed, 63 insertions, 0 deletions
diff --git a/src/test/compile-fail/auxiliary/privacy-struct-ctor.rs b/src/test/compile-fail/auxiliary/privacy-struct-ctor.rs new file mode 100644 index 00000000000..f190f5dd053 --- /dev/null +++ b/src/test/compile-fail/auxiliary/privacy-struct-ctor.rs @@ -0,0 +1,21 @@ +// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(pub_restricted)] + +pub mod m { + pub struct S(u8); + + pub mod n { + pub(m) struct Z(pub(m::n) u8); + } +} + +pub use m::S; diff --git a/src/test/compile-fail/privacy-struct-ctor.rs b/src/test/compile-fail/privacy-struct-ctor.rs new file mode 100644 index 00000000000..13a04f49014 --- /dev/null +++ b/src/test/compile-fail/privacy-struct-ctor.rs @@ -0,0 +1,42 @@ +// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:privacy-struct-ctor.rs + +#![feature(pub_restricted)] + +extern crate privacy_struct_ctor as xcrate; + +mod m { + pub struct S(u8); + + pub mod n { + pub(m) struct Z(pub(m::n) u8); + } + + use m::n::Z; // OK, only the type is imported + + fn f() { + n::Z; //~ ERROR tuple struct `Z` is private + Z; //~ ERROR expected value, found struct `Z` + } +} + +use m::S; // OK, only the type is imported + +fn main() { + m::S; //~ ERROR tuple struct `S` is private + S; //~ ERROR expected value, found struct `S` + m::n::Z; //~ ERROR tuple struct `Z` is private + + xcrate::m::S; //~ ERROR tuple struct `S` is private + xcrate::S; //~ ERROR expected value, found struct `xcrate::S` + xcrate::m::n::Z; //~ ERROR tuple struct `Z` is private +} |
