diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/privacy/pub-priv-dep | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-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/privacy/pub-priv-dep')
-rw-r--r-- | tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs | 2 | ||||
-rw-r--r-- | tests/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs | 1 | ||||
-rw-r--r-- | tests/ui/privacy/pub-priv-dep/pub-priv1.rs | 44 | ||||
-rw-r--r-- | tests/ui/privacy/pub-priv-dep/pub-priv1.stderr | 26 | ||||
-rw-r--r-- | tests/ui/privacy/pub-priv-dep/std-pub.rs | 12 |
5 files changed, 85 insertions, 0 deletions
diff --git a/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs b/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs new file mode 100644 index 000000000..e7afeb84f --- /dev/null +++ b/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs @@ -0,0 +1,2 @@ +pub struct OtherType; +pub trait OtherTrait {} diff --git a/tests/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs b/tests/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs new file mode 100644 index 000000000..3ebafd953 --- /dev/null +++ b/tests/ui/privacy/pub-priv-dep/auxiliary/pub_dep.rs @@ -0,0 +1 @@ +pub struct PubType; diff --git a/tests/ui/privacy/pub-priv-dep/pub-priv1.rs b/tests/ui/privacy/pub-priv-dep/pub-priv1.rs new file mode 100644 index 000000000..ec8666f93 --- /dev/null +++ b/tests/ui/privacy/pub-priv-dep/pub-priv1.rs @@ -0,0 +1,44 @@ +// aux-crate:priv:priv_dep=priv_dep.rs +// aux-build:pub_dep.rs +// compile-flags: -Zunstable-options +#![deny(exported_private_dependencies)] + +// This crate is a private dependency +extern crate priv_dep; +// This crate is a public dependency +extern crate pub_dep; + +use priv_dep::{OtherTrait, OtherType}; +use pub_dep::PubType; + +// Type from private dependency used in private +// type - this is fine +struct PrivateType { + field: OtherType, +} + +pub struct PublicType { + pub field: OtherType, + //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface + priv_field: OtherType, // Private field - this is fine + pub other_field: PubType, // Type from public dependency - this is fine +} + +impl PublicType { + pub fn pub_fn(param: OtherType) {} + //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface + + fn priv_fn(param: OtherType) {} +} + +pub trait MyPubTrait { + type Foo: OtherTrait; +} +//~^^ ERROR trait `OtherTrait` from private dependency 'priv_dep' in public interface + +pub struct AllowedPrivType { + #[allow(exported_private_dependencies)] + pub allowed: OtherType, +} + +fn main() {} diff --git a/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr b/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr new file mode 100644 index 000000000..e62a440d8 --- /dev/null +++ b/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr @@ -0,0 +1,26 @@ +error: type `OtherType` from private dependency 'priv_dep' in public interface + --> $DIR/pub-priv1.rs:21:5 + | +LL | pub field: OtherType, + | ^^^^^^^^^^^^^^^^^^^^ + | +note: the lint level is defined here + --> $DIR/pub-priv1.rs:4:9 + | +LL | #![deny(exported_private_dependencies)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: type `OtherType` from private dependency 'priv_dep' in public interface + --> $DIR/pub-priv1.rs:28:5 + | +LL | pub fn pub_fn(param: OtherType) {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: trait `OtherTrait` from private dependency 'priv_dep' in public interface + --> $DIR/pub-priv1.rs:35:5 + | +LL | type Foo: OtherTrait; + | ^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 3 previous errors + diff --git a/tests/ui/privacy/pub-priv-dep/std-pub.rs b/tests/ui/privacy/pub-priv-dep/std-pub.rs new file mode 100644 index 000000000..e25aa93a0 --- /dev/null +++ b/tests/ui/privacy/pub-priv-dep/std-pub.rs @@ -0,0 +1,12 @@ +// The 'std' crates should always be implicitly public, +// without having to pass any compiler arguments + +// run-pass + +#![deny(exported_private_dependencies)] + +pub struct PublicType { + pub field: Option<u8> +} + +fn main() {} |