diff options
| author | Bryanskiy <ivakin.kir@gmail.com> | 2023-05-18 14:57:45 +0300 |
|---|---|---|
| committer | Bryanskiy <ivakin.kir@gmail.com> | 2023-06-12 01:02:19 +0300 |
| commit | 6d46382f6f0688df0fc5c67386f86ccd6fdb975f (patch) | |
| tree | da222fe6ab404e953e1683070bdd60a700b5991c /tests/ui/error-codes | |
| parent | d0ee1908ed791d3e91d2ad74ba502eaa203cff6d (diff) | |
| download | rust-6d46382f6f0688df0fc5c67386f86ccd6fdb975f.tar.gz rust-6d46382f6f0688df0fc5c67386f86ccd6fdb975f.zip | |
Private-in-public lints implementation
Diffstat (limited to 'tests/ui/error-codes')
| -rw-r--r-- | tests/ui/error-codes/E0445.rs | 7 | ||||
| -rw-r--r-- | tests/ui/error-codes/E0445.stderr | 52 |
2 files changed, 55 insertions, 4 deletions
diff --git a/tests/ui/error-codes/E0445.rs b/tests/ui/error-codes/E0445.rs index a9a3aee2500..f5f35fb8a4d 100644 --- a/tests/ui/error-codes/E0445.rs +++ b/tests/ui/error-codes/E0445.rs @@ -1,3 +1,10 @@ +#[warn(private_bounds)] +#[warn(private_interfaces)] + +// In this test both old and new private-in-public diagnostic were emitted. +// Old diagnostic will be deleted soon. +// See https://rust-lang.github.io/rfcs/2145-type-privacy.html. + trait Foo { fn dummy(&self) { } } diff --git a/tests/ui/error-codes/E0445.stderr b/tests/ui/error-codes/E0445.stderr index 23b7a335047..ac3637a8218 100644 --- a/tests/ui/error-codes/E0445.stderr +++ b/tests/ui/error-codes/E0445.stderr @@ -1,5 +1,5 @@ error[E0445]: private trait `Foo` in public interface - --> $DIR/E0445.rs:5:1 + --> $DIR/E0445.rs:12:1 | LL | trait Foo { | --------- `Foo` declared as private @@ -7,8 +7,26 @@ LL | trait Foo { LL | pub trait Bar : Foo {} | ^^^^^^^^^^^^^^^^^^^ can't leak private trait +warning: trait `Foo` is more private than the item `Bar` + | +note: trait `Bar` is reachable at visibility `pub` + --> $DIR/E0445.rs:12:1 + | +LL | pub trait Bar : Foo {} + | ^^^^^^^^^^^^^^^^^^^ +note: but trait `Foo` is only usable at visibility `pub(crate)` + --> $DIR/E0445.rs:8:1 + | +LL | trait Foo { + | ^^^^^^^^^ +note: the lint level is defined here + --> $DIR/E0445.rs:1:8 + | +LL | #[warn(private_bounds)] + | ^^^^^^^^^^^^^^ + error[E0445]: private trait `Foo` in public interface - --> $DIR/E0445.rs:7:1 + --> $DIR/E0445.rs:14:1 | LL | trait Foo { | --------- `Foo` declared as private @@ -16,8 +34,21 @@ LL | trait Foo { LL | pub struct Bar2<T: Foo>(pub T); | ^^^^^^^^^^^^^^^^^^^^^^^ can't leak private trait +warning: trait `Foo` is more private than the item `Bar2` + | +note: struct `Bar2` is reachable at visibility `pub` + --> $DIR/E0445.rs:14:1 + | +LL | pub struct Bar2<T: Foo>(pub T); + | ^^^^^^^^^^^^^^^^^^^^^^^ +note: but trait `Foo` is only usable at visibility `pub(crate)` + --> $DIR/E0445.rs:8:1 + | +LL | trait Foo { + | ^^^^^^^^^ + error[E0445]: private trait `Foo` in public interface - --> $DIR/E0445.rs:9:1 + --> $DIR/E0445.rs:16:1 | LL | trait Foo { | --------- `Foo` declared as private @@ -25,6 +56,19 @@ LL | trait Foo { LL | pub fn foo<T: Foo> (t: T) {} | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't leak private trait -error: aborting due to 3 previous errors +warning: trait `Foo` is more private than the item `foo` + | +note: function `foo` is reachable at visibility `pub` + --> $DIR/E0445.rs:16:1 + | +LL | pub fn foo<T: Foo> (t: T) {} + | ^^^^^^^^^^^^^^^^^^^^^^^^^ +note: but trait `Foo` is only usable at visibility `pub(crate)` + --> $DIR/E0445.rs:8:1 + | +LL | trait Foo { + | ^^^^^^^^^ + +error: aborting due to 3 previous errors; 3 warnings emitted For more information about this error, try `rustc --explain E0445`. |
