summaryrefslogtreecommitdiffstats
path: root/tests/ui/privacy
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/privacy')
-rw-r--r--tests/ui/privacy/auxiliary/issue-117997.rs35
-rw-r--r--tests/ui/privacy/decl-macro.stderr2
-rw-r--r--tests/ui/privacy/export-tag-variant.stderr2
-rw-r--r--tests/ui/privacy/import-list-stem-visibility-issue-119126.rs14
-rw-r--r--tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr2
-rw-r--r--tests/ui/privacy/issue-117997.rs8
-rw-r--r--tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr26
-rw-r--r--tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr2
-rw-r--r--tests/ui/privacy/issue-75906.stderr2
-rw-r--r--tests/ui/privacy/issue-79593.stderr2
-rw-r--r--tests/ui/privacy/legacy-ctor-visibility.stderr2
-rw-r--r--tests/ui/privacy/privacy-ufcs.stderr2
-rw-r--r--tests/ui/privacy/privacy2.stderr2
-rw-r--r--tests/ui/privacy/privacy4.stderr2
-rw-r--r--tests/ui/privacy/private-field-ty-err.stderr2
-rw-r--r--tests/ui/privacy/private-impl-method.stderr2
-rw-r--r--tests/ui/privacy/private-in-public-non-principal-2.stderr2
-rw-r--r--tests/ui/privacy/private-in-public-non-principal.stderr2
-rw-r--r--tests/ui/privacy/private-in-public.rs2
-rw-r--r--tests/ui/privacy/private-in-public.stderr50
-rw-r--r--tests/ui/privacy/private-item-simple.stderr2
-rw-r--r--tests/ui/privacy/private-method-cross-crate.stderr2
-rw-r--r--tests/ui/privacy/private-method-inherited.stderr2
-rw-r--r--tests/ui/privacy/private-method.stderr2
-rw-r--r--tests/ui/privacy/private-struct-field-cross-crate.stderr2
-rw-r--r--tests/ui/privacy/private-struct-field-ctor.stderr2
-rw-r--r--tests/ui/privacy/private-struct-field-pattern.stderr2
-rw-r--r--tests/ui/privacy/private-struct-field.stderr2
-rw-r--r--tests/ui/privacy/private-variant-reexport.stderr8
-rw-r--r--tests/ui/privacy/restricted/struct-literal-field.stderr2
-rw-r--r--tests/ui/privacy/sealed-traits/private-trait-non-local.stderr2
-rw-r--r--tests/ui/privacy/sealed-traits/private-trait.stderr2
-rw-r--r--tests/ui/privacy/sealed-traits/re-exported-trait.stderr2
-rw-r--r--tests/ui/privacy/suggest-box-new.fixed15
-rw-r--r--tests/ui/privacy/suggest-box-new.rs6
-rw-r--r--tests/ui/privacy/suggest-box-new.stderr90
-rw-r--r--tests/ui/privacy/union-field-privacy-2.stderr2
-rw-r--r--tests/ui/privacy/unresolved-trait-impl-item.rs15
-rw-r--r--tests/ui/privacy/unresolved-trait-impl-item.stderr22
-rw-r--r--tests/ui/privacy/where-priv-type.stderr2
40 files changed, 281 insertions, 66 deletions
diff --git a/tests/ui/privacy/auxiliary/issue-117997.rs b/tests/ui/privacy/auxiliary/issue-117997.rs
new file mode 100644
index 000000000..6f71cc2ba
--- /dev/null
+++ b/tests/ui/privacy/auxiliary/issue-117997.rs
@@ -0,0 +1,35 @@
+// no-prefer-dynamic
+// compile-flags: --crate-type=rlib
+
+pub use impl_mod::TraitImplementer as Implementer;
+
+pub use trait_mod::get_assoc;
+
+mod impl_mod {
+ use crate::trait_mod::TraitWithAssocType;
+
+ pub struct TraitImplementer {}
+ pub struct AssociatedType {}
+
+ impl AssociatedType {
+ pub fn method_on_assoc(&self) -> i32 {
+ todo!()
+ }
+ }
+
+ impl TraitWithAssocType for TraitImplementer {
+ type AssocType = AssociatedType;
+ }
+}
+
+mod trait_mod {
+ use crate::Implementer;
+
+ pub fn get_assoc() -> <Implementer as TraitWithAssocType>::AssocType {
+ todo!()
+ }
+
+ pub trait TraitWithAssocType {
+ type AssocType;
+ }
+}
diff --git a/tests/ui/privacy/decl-macro.stderr b/tests/ui/privacy/decl-macro.stderr
index 5bc6f07ff..1ca75ec36 100644
--- a/tests/ui/privacy/decl-macro.stderr
+++ b/tests/ui/privacy/decl-macro.stderr
@@ -10,6 +10,6 @@ note: the macro `mac` is defined here
LL | macro mac() {}
| ^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/export-tag-variant.stderr b/tests/ui/privacy/export-tag-variant.stderr
index e8906985e..778ded2df 100644
--- a/tests/ui/privacy/export-tag-variant.stderr
+++ b/tests/ui/privacy/export-tag-variant.stderr
@@ -12,6 +12,6 @@ note: the enum `Y` is defined here
LL | enum Y { Y1 }
| ^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/import-list-stem-visibility-issue-119126.rs b/tests/ui/privacy/import-list-stem-visibility-issue-119126.rs
new file mode 100644
index 000000000..21f7828fc
--- /dev/null
+++ b/tests/ui/privacy/import-list-stem-visibility-issue-119126.rs
@@ -0,0 +1,14 @@
+// check-pass
+// edition: 2018
+
+mod outer {
+ mod inner {
+ pub mod inner2 {}
+ }
+ pub(crate) use inner::{};
+ pub(crate) use inner::{{}};
+ pub(crate) use inner::{inner2::{}};
+ pub(crate) use inner::{inner2::{{}}};
+}
+
+fn main() {}
diff --git a/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr b/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr
index 231a4da8b..eda42c24c 100644
--- a/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr
+++ b/tests/ui/privacy/issue-111220-2-tuple-struct-fields-projection.stderr
@@ -4,6 +4,6 @@ error[E0603]: tuple struct constructor `A` is private
LL | let Self(a) = self;
| ^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/issue-117997.rs b/tests/ui/privacy/issue-117997.rs
new file mode 100644
index 000000000..d8284ef29
--- /dev/null
+++ b/tests/ui/privacy/issue-117997.rs
@@ -0,0 +1,8 @@
+// aux-build:issue-117997.rs
+// build-pass
+
+extern crate issue_117997;
+
+pub fn main() {
+ issue_117997::get_assoc().method_on_assoc();
+}
diff --git a/tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr b/tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr
index df5968ba3..93a39edbb 100644
--- a/tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr
+++ b/tests/ui/privacy/issue-46209-private-enum-variant-reexport.stderr
@@ -22,12 +22,18 @@ note: consider marking `Full` as `pub` in the imported module
LL | pub use self::Lieutenant::{JuniorGrade, Full};
| ^^^^
-error: glob import doesn't reexport anything because no candidate is public enough
+error: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
--> $DIR/issue-46209-private-enum-variant-reexport.rs:3:13
|
LL | pub use self::Professor::*;
| ^^^^^^^^^^^^^^^^^^
|
+note: the most public imported item is `pub(self)`
+ --> $DIR/issue-46209-private-enum-variant-reexport.rs:3:13
+ |
+LL | pub use self::Professor::*;
+ | ^^^^^^^^^^^^^^^^^^
+ = help: reduce the glob import's visibility or increase visibility of imported items
note: the lint level is defined here
--> $DIR/issue-46209-private-enum-variant-reexport.rs:1:8
|
@@ -46,11 +52,18 @@ error: unused imports: `Full`, `JuniorGrade`
LL | pub use self::Lieutenant::{JuniorGrade, Full};
| ^^^^^^^^^^^ ^^^^
-error: glob import doesn't reexport anything because no candidate is public enough
+error: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
+ --> $DIR/issue-46209-private-enum-variant-reexport.rs:10:13
+ |
+LL | pub use self::PettyOfficer::*;
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+note: the most public imported item is `pub(self)`
--> $DIR/issue-46209-private-enum-variant-reexport.rs:10:13
|
LL | pub use self::PettyOfficer::*;
| ^^^^^^^^^^^^^^^^^^^^^
+ = help: reduce the glob import's visibility or increase visibility of imported items
error: unused import: `self::PettyOfficer::*`
--> $DIR/issue-46209-private-enum-variant-reexport.rs:10:13
@@ -58,11 +71,18 @@ error: unused import: `self::PettyOfficer::*`
LL | pub use self::PettyOfficer::*;
| ^^^^^^^^^^^^^^^^^^^^^
-error: glob import doesn't reexport anything because no candidate is public enough
+error: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
+ --> $DIR/issue-46209-private-enum-variant-reexport.rs:13:13
+ |
+LL | pub use self::Crewman::*;
+ | ^^^^^^^^^^^^^^^^
+ |
+note: the most public imported item is `pub(crate)`
--> $DIR/issue-46209-private-enum-variant-reexport.rs:13:13
|
LL | pub use self::Crewman::*;
| ^^^^^^^^^^^^^^^^
+ = help: reduce the glob import's visibility or increase visibility of imported items
error: unused import: `self::Crewman::*`
--> $DIR/issue-46209-private-enum-variant-reexport.rs:13:13
diff --git a/tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr b/tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr
index 14a12003e..b00e566f8 100644
--- a/tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr
+++ b/tests/ui/privacy/issue-75062-fieldless-tuple-struct.stderr
@@ -10,6 +10,6 @@ note: the tuple struct `Bar` is defined here
LL | struct Bar();
| ^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/issue-75906.stderr b/tests/ui/privacy/issue-75906.stderr
index 600dc7c87..c5bbef97c 100644
--- a/tests/ui/privacy/issue-75906.stderr
+++ b/tests/ui/privacy/issue-75906.stderr
@@ -14,6 +14,6 @@ help: consider making the field publicly accessible
LL | pub struct Bar(pub u8);
| +++
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0423`.
diff --git a/tests/ui/privacy/issue-79593.stderr b/tests/ui/privacy/issue-79593.stderr
index 21ba760ad..5bb69836f 100644
--- a/tests/ui/privacy/issue-79593.stderr
+++ b/tests/ui/privacy/issue-79593.stderr
@@ -16,7 +16,7 @@ error: cannot construct `Pub` with struct literal syntax due to private fields
LL | foo::Pub {};
| ^^^^^^^^
|
- = note: ... and other private field `private` that was not provided
+ = note: private field `private` that was not provided
error[E0063]: missing field `y` in initializer of `Enum`
--> $DIR/issue-79593.rs:23:5
diff --git a/tests/ui/privacy/legacy-ctor-visibility.stderr b/tests/ui/privacy/legacy-ctor-visibility.stderr
index c8057d85e..78c79fc95 100644
--- a/tests/ui/privacy/legacy-ctor-visibility.stderr
+++ b/tests/ui/privacy/legacy-ctor-visibility.stderr
@@ -4,6 +4,6 @@ error[E0423]: expected function, tuple struct or tuple variant, found struct `S`
LL | S(10);
| ^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0423`.
diff --git a/tests/ui/privacy/privacy-ufcs.stderr b/tests/ui/privacy/privacy-ufcs.stderr
index f45f3d8ec..5c986895d 100644
--- a/tests/ui/privacy/privacy-ufcs.stderr
+++ b/tests/ui/privacy/privacy-ufcs.stderr
@@ -12,6 +12,6 @@ note: the trait `Bar` is defined here
LL | trait Bar {
| ^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/privacy2.stderr b/tests/ui/privacy/privacy2.stderr
index e7135d3fd..46bb9823d 100644
--- a/tests/ui/privacy/privacy2.stderr
+++ b/tests/ui/privacy/privacy2.stderr
@@ -19,7 +19,7 @@ note: ...and refers to the function `foo` which is defined here
--> $DIR/privacy2.rs:16:1
|
LL | pub fn foo() {}
- | ^^^^^^^^^^^^ consider importing it directly
+ | ^^^^^^^^^^^^ you could import this directly
error: requires `sized` lang_item
diff --git a/tests/ui/privacy/privacy4.stderr b/tests/ui/privacy/privacy4.stderr
index 7552fa71a..4aa3ae964 100644
--- a/tests/ui/privacy/privacy4.stderr
+++ b/tests/ui/privacy/privacy4.stderr
@@ -10,6 +10,6 @@ note: the module `glob` is defined here
LL | mod glob {
| ^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/private-field-ty-err.stderr b/tests/ui/privacy/private-field-ty-err.stderr
index 98ba7856e..17d50f24a 100644
--- a/tests/ui/privacy/private-field-ty-err.stderr
+++ b/tests/ui/privacy/private-field-ty-err.stderr
@@ -4,6 +4,6 @@ error[E0616]: field `len` of struct `Foo` is private
LL | if x.len {
| ^^^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0616`.
diff --git a/tests/ui/privacy/private-impl-method.stderr b/tests/ui/privacy/private-impl-method.stderr
index 18e4531d1..c53232e4c 100644
--- a/tests/ui/privacy/private-impl-method.stderr
+++ b/tests/ui/privacy/private-impl-method.stderr
@@ -7,6 +7,6 @@ LL | fn foo(&self) {}
LL | s.foo();
| ^^^ private method
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0624`.
diff --git a/tests/ui/privacy/private-in-public-non-principal-2.stderr b/tests/ui/privacy/private-in-public-non-principal-2.stderr
index 7cc8bf0de..d3da2326a 100644
--- a/tests/ui/privacy/private-in-public-non-principal-2.stderr
+++ b/tests/ui/privacy/private-in-public-non-principal-2.stderr
@@ -4,5 +4,5 @@ error: trait `PrivNonPrincipal` is private
LL | m::leak_dyn_nonprincipal();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ private trait
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/privacy/private-in-public-non-principal.stderr b/tests/ui/privacy/private-in-public-non-principal.stderr
index 63512f462..73f2249bc 100644
--- a/tests/ui/privacy/private-in-public-non-principal.stderr
+++ b/tests/ui/privacy/private-in-public-non-principal.stderr
@@ -23,5 +23,5 @@ note: the lint level is defined here
LL | #[deny(missing_docs)]
| ^^^^^^^^^^^^
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/privacy/private-in-public.rs b/tests/ui/privacy/private-in-public.rs
index 3fff2d517..7b8e0fbe6 100644
--- a/tests/ui/privacy/private-in-public.rs
+++ b/tests/ui/privacy/private-in-public.rs
@@ -106,6 +106,7 @@ mod aliases_pub {
pub fn f3(arg: <Priv as PrivTr>::Assoc) {}
//~^ WARNING type `aliases_pub::Priv` is more private than the item `aliases_pub::f3`
//~| WARNING associated type `aliases_pub::PrivTr::Assoc` is more private than the item `aliases_pub::f3`
+ //~^^^ WARNING trait `aliases_pub::PrivTr` is more private than the item `aliases_pub::f3`
impl PrivUseAlias {
pub fn f(arg: Priv) {}
@@ -135,6 +136,7 @@ mod aliases_priv {
pub fn f3(arg: <Priv as PrivTr>::Assoc) {}
//~^ WARNING type `aliases_priv::Priv` is more private than the item `aliases_priv::f3`
//~| WARNING associated type `aliases_priv::PrivTr::Assoc` is more private than the item `aliases_priv::f3`
+ //~^^^ WARNING trait `aliases_priv::PrivTr` is more private than the item `aliases_priv::f3`
}
mod aliases_params {
diff --git a/tests/ui/privacy/private-in-public.stderr b/tests/ui/privacy/private-in-public.stderr
index 49cc2e19b..ff3061337 100644
--- a/tests/ui/privacy/private-in-public.stderr
+++ b/tests/ui/privacy/private-in-public.stderr
@@ -288,6 +288,18 @@ note: but associated type `aliases_pub::PrivTr::Assoc` is only usable at visibil
LL | type Assoc = m::Pub3;
| ^^^^^^^^^^
+warning: trait `aliases_pub::PrivTr` is more private than the item `aliases_pub::f3`
+ --> $DIR/private-in-public.rs:106:5
+ |
+LL | pub fn f3(arg: <Priv as PrivTr>::Assoc) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_pub::f3` is reachable at visibility `pub(crate)`
+ |
+note: but trait `aliases_pub::PrivTr` is only usable at visibility `pub(self)`
+ --> $DIR/private-in-public.rs:100:5
+ |
+LL | trait PrivTr {
+ | ^^^^^^^^^^^^
+
warning: type `aliases_pub::Priv` is more private than the item `aliases_pub::f3`
--> $DIR/private-in-public.rs:106:5
|
@@ -301,76 +313,88 @@ LL | struct Priv;
| ^^^^^^^^^^^
warning: type `Priv1` is more private than the item `aliases_priv::f1`
- --> $DIR/private-in-public.rs:133:5
+ --> $DIR/private-in-public.rs:134:5
|
LL | pub fn f1(arg: PrivUseAlias) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_priv::f1` is reachable at visibility `pub(crate)`
|
note: but type `Priv1` is only usable at visibility `pub(self)`
- --> $DIR/private-in-public.rs:118:5
+ --> $DIR/private-in-public.rs:119:5
|
LL | struct Priv1;
| ^^^^^^^^^^^^
warning: type `Priv2` is more private than the item `aliases_priv::f2`
- --> $DIR/private-in-public.rs:134:5
+ --> $DIR/private-in-public.rs:135:5
|
LL | pub fn f2(arg: PrivAlias) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_priv::f2` is reachable at visibility `pub(crate)`
|
note: but type `Priv2` is only usable at visibility `pub(self)`
- --> $DIR/private-in-public.rs:119:5
+ --> $DIR/private-in-public.rs:120:5
|
LL | struct Priv2;
| ^^^^^^^^^^^^
warning: associated type `aliases_priv::PrivTr::Assoc` is more private than the item `aliases_priv::f3`
- --> $DIR/private-in-public.rs:135:5
+ --> $DIR/private-in-public.rs:136:5
|
LL | pub fn f3(arg: <Priv as PrivTr>::Assoc) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_priv::f3` is reachable at visibility `pub(crate)`
|
note: but associated type `aliases_priv::PrivTr::Assoc` is only usable at visibility `pub(self)`
- --> $DIR/private-in-public.rs:129:9
+ --> $DIR/private-in-public.rs:130:9
|
LL | type Assoc = Priv3;
| ^^^^^^^^^^
+warning: trait `aliases_priv::PrivTr` is more private than the item `aliases_priv::f3`
+ --> $DIR/private-in-public.rs:136:5
+ |
+LL | pub fn f3(arg: <Priv as PrivTr>::Assoc) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_priv::f3` is reachable at visibility `pub(crate)`
+ |
+note: but trait `aliases_priv::PrivTr` is only usable at visibility `pub(self)`
+ --> $DIR/private-in-public.rs:129:5
+ |
+LL | trait PrivTr {
+ | ^^^^^^^^^^^^
+
warning: type `aliases_priv::Priv` is more private than the item `aliases_priv::f3`
- --> $DIR/private-in-public.rs:135:5
+ --> $DIR/private-in-public.rs:136:5
|
LL | pub fn f3(arg: <Priv as PrivTr>::Assoc) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_priv::f3` is reachable at visibility `pub(crate)`
|
note: but type `aliases_priv::Priv` is only usable at visibility `pub(self)`
- --> $DIR/private-in-public.rs:116:5
+ --> $DIR/private-in-public.rs:117:5
|
LL | struct Priv;
| ^^^^^^^^^^^
warning: type `aliases_params::Priv` is more private than the item `aliases_params::f2`
- --> $DIR/private-in-public.rs:145:5
+ --> $DIR/private-in-public.rs:147:5
|
LL | pub fn f2(arg: PrivAliasGeneric) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_params::f2` is reachable at visibility `pub(crate)`
|
note: but type `aliases_params::Priv` is only usable at visibility `pub(self)`
- --> $DIR/private-in-public.rs:141:5
+ --> $DIR/private-in-public.rs:143:5
|
LL | struct Priv;
| ^^^^^^^^^^^
warning: type `aliases_params::Priv` is more private than the item `aliases_params::f3`
- --> $DIR/private-in-public.rs:147:5
+ --> $DIR/private-in-public.rs:149:5
|
LL | pub fn f3(arg: Result<u8>) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ function `aliases_params::f3` is reachable at visibility `pub(crate)`
|
note: but type `aliases_params::Priv` is only usable at visibility `pub(self)`
- --> $DIR/private-in-public.rs:141:5
+ --> $DIR/private-in-public.rs:143:5
|
LL | struct Priv;
| ^^^^^^^^^^^
-warning: 31 warnings emitted
+warning: 33 warnings emitted
diff --git a/tests/ui/privacy/private-item-simple.stderr b/tests/ui/privacy/private-item-simple.stderr
index e3d90150e..330d892e9 100644
--- a/tests/ui/privacy/private-item-simple.stderr
+++ b/tests/ui/privacy/private-item-simple.stderr
@@ -10,6 +10,6 @@ note: the function `f` is defined here
LL | fn f() {}
| ^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/private-method-cross-crate.stderr b/tests/ui/privacy/private-method-cross-crate.stderr
index e644440c8..9c524e2bd 100644
--- a/tests/ui/privacy/private-method-cross-crate.stderr
+++ b/tests/ui/privacy/private-method-cross-crate.stderr
@@ -9,6 +9,6 @@ LL | nyan.nap();
LL | fn nap(&self) {}
| ------------- private method defined here
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0624`.
diff --git a/tests/ui/privacy/private-method-inherited.stderr b/tests/ui/privacy/private-method-inherited.stderr
index 0104a1b27..dd36afe8b 100644
--- a/tests/ui/privacy/private-method-inherited.stderr
+++ b/tests/ui/privacy/private-method-inherited.stderr
@@ -7,6 +7,6 @@ LL | fn f(self) {}
LL | x.f();
| ^ private method
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0624`.
diff --git a/tests/ui/privacy/private-method.stderr b/tests/ui/privacy/private-method.stderr
index 42fec7622..076a149e1 100644
--- a/tests/ui/privacy/private-method.stderr
+++ b/tests/ui/privacy/private-method.stderr
@@ -7,6 +7,6 @@ LL | fn nap(&self) {}
LL | nyan.nap();
| ^^^ private method
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0624`.
diff --git a/tests/ui/privacy/private-struct-field-cross-crate.stderr b/tests/ui/privacy/private-struct-field-cross-crate.stderr
index 40cf3448d..ed4c83f15 100644
--- a/tests/ui/privacy/private-struct-field-cross-crate.stderr
+++ b/tests/ui/privacy/private-struct-field-cross-crate.stderr
@@ -4,6 +4,6 @@ error[E0616]: field `meows` of struct `cat` is private
LL | assert_eq!(nyan.meows, 52);
| ^^^^^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0616`.
diff --git a/tests/ui/privacy/private-struct-field-ctor.stderr b/tests/ui/privacy/private-struct-field-ctor.stderr
index 9dc9db0ea..2a3553723 100644
--- a/tests/ui/privacy/private-struct-field-ctor.stderr
+++ b/tests/ui/privacy/private-struct-field-ctor.stderr
@@ -4,6 +4,6 @@ error[E0451]: field `x` of struct `Foo` is private
LL | let s = a::Foo { x: 1 };
| ^^^^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0451`.
diff --git a/tests/ui/privacy/private-struct-field-pattern.stderr b/tests/ui/privacy/private-struct-field-pattern.stderr
index 630553036..de24d1e09 100644
--- a/tests/ui/privacy/private-struct-field-pattern.stderr
+++ b/tests/ui/privacy/private-struct-field-pattern.stderr
@@ -4,6 +4,6 @@ error[E0451]: field `x` of struct `Foo` is private
LL | Foo { x: _ } => {}
| ^^^^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0451`.
diff --git a/tests/ui/privacy/private-struct-field.stderr b/tests/ui/privacy/private-struct-field.stderr
index facf4e82f..cc5a966bc 100644
--- a/tests/ui/privacy/private-struct-field.stderr
+++ b/tests/ui/privacy/private-struct-field.stderr
@@ -4,6 +4,6 @@ error[E0616]: field `meows` of struct `Cat` is private
LL | assert_eq!(nyan.meows, 52);
| ^^^^^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0616`.
diff --git a/tests/ui/privacy/private-variant-reexport.stderr b/tests/ui/privacy/private-variant-reexport.stderr
index 2f041934a..d73bd1a8c 100644
--- a/tests/ui/privacy/private-variant-reexport.stderr
+++ b/tests/ui/privacy/private-variant-reexport.stderr
@@ -30,12 +30,18 @@ LL | pub use ::E::V::{self};
|
= note: consider declaring type or module `V` with `pub`
-error: glob import doesn't reexport anything because no candidate is public enough
+error: glob import doesn't reexport anything with visibility `pub` because no imported item is public enough
--> $DIR/private-variant-reexport.rs:15:13
|
LL | pub use ::E::*;
| ^^^^^^
|
+note: the most public imported item is `pub(crate)`
+ --> $DIR/private-variant-reexport.rs:15:13
+ |
+LL | pub use ::E::*;
+ | ^^^^^^
+ = help: reduce the glob import's visibility or increase visibility of imported items
note: the lint level is defined here
--> $DIR/private-variant-reexport.rs:13:8
|
diff --git a/tests/ui/privacy/restricted/struct-literal-field.stderr b/tests/ui/privacy/restricted/struct-literal-field.stderr
index eee964f02..dcdadf1da 100644
--- a/tests/ui/privacy/restricted/struct-literal-field.stderr
+++ b/tests/ui/privacy/restricted/struct-literal-field.stderr
@@ -4,6 +4,6 @@ error[E0451]: field `x` of struct `S` is private
LL | S { x: 0 };
| ^^^^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0451`.
diff --git a/tests/ui/privacy/sealed-traits/private-trait-non-local.stderr b/tests/ui/privacy/sealed-traits/private-trait-non-local.stderr
index 294999798..e6b76322f 100644
--- a/tests/ui/privacy/sealed-traits/private-trait-non-local.stderr
+++ b/tests/ui/privacy/sealed-traits/private-trait-non-local.stderr
@@ -7,6 +7,6 @@ LL | use core::slice::index::private_slice_index::Sealed;
note: the module `index` is defined here
--> $SRC_DIR/core/src/slice/mod.rs:LL:COL
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/sealed-traits/private-trait.stderr b/tests/ui/privacy/sealed-traits/private-trait.stderr
index c7ec72ff1..e8d88906f 100644
--- a/tests/ui/privacy/sealed-traits/private-trait.stderr
+++ b/tests/ui/privacy/sealed-traits/private-trait.stderr
@@ -12,6 +12,6 @@ note: the module `b` is defined here
LL | mod b {
| ^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/sealed-traits/re-exported-trait.stderr b/tests/ui/privacy/sealed-traits/re-exported-trait.stderr
index b630565d0..9f2291e68 100644
--- a/tests/ui/privacy/sealed-traits/re-exported-trait.stderr
+++ b/tests/ui/privacy/sealed-traits/re-exported-trait.stderr
@@ -14,6 +14,6 @@ help: consider importing this trait through its public re-export instead
LL | impl a::Trait for S {}
| ~~~~~~~~
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0603`.
diff --git a/tests/ui/privacy/suggest-box-new.fixed b/tests/ui/privacy/suggest-box-new.fixed
deleted file mode 100644
index f5ae5c2ab..000000000
--- a/tests/ui/privacy/suggest-box-new.fixed
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-rustfix
-#![allow(dead_code)]
-struct U <T> {
- wtf: Option<Box<U<T>>>,
- x: T,
-}
-fn main() {
- U {
- wtf: Some(Box::new(U { //~ ERROR cannot initialize a tuple struct which contains private fields
- wtf: None,
- x: (),
- })),
- x: ()
- };
-}
diff --git a/tests/ui/privacy/suggest-box-new.rs b/tests/ui/privacy/suggest-box-new.rs
index 2e18dba8b..7125285fc 100644
--- a/tests/ui/privacy/suggest-box-new.rs
+++ b/tests/ui/privacy/suggest-box-new.rs
@@ -1,4 +1,3 @@
-// run-rustfix
#![allow(dead_code)]
struct U <T> {
wtf: Option<Box<U<T>>>,
@@ -12,4 +11,9 @@ fn main() {
})),
x: ()
};
+ let _ = std::collections::HashMap();
+ //~^ ERROR expected function, tuple struct or tuple variant, found struct `std::collections::HashMap`
+ let _ = std::collections::HashMap {};
+ //~^ ERROR cannot construct `HashMap<_, _, _>` with struct literal syntax due to private fields
+ let _ = Box {}; //~ ERROR cannot construct `Box<_, _>` with struct literal syntax due to private fields
}
diff --git a/tests/ui/privacy/suggest-box-new.stderr b/tests/ui/privacy/suggest-box-new.stderr
index ed7fa0364..8b01e8c3c 100644
--- a/tests/ui/privacy/suggest-box-new.stderr
+++ b/tests/ui/privacy/suggest-box-new.stderr
@@ -1,5 +1,29 @@
+error[E0423]: expected function, tuple struct or tuple variant, found struct `std::collections::HashMap`
+ --> $DIR/suggest-box-new.rs:14:13
+ |
+LL | let _ = std::collections::HashMap();
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ --> $SRC_DIR/std/src/collections/hash/map.rs:LL:COL
+ |
+ = note: `std::collections::HashMap` defined here
+ |
+help: you might have meant to use an associated function to build this type
+ |
+LL | let _ = std::collections::HashMap::new();
+ | ~~~~~~~
+LL | let _ = std::collections::HashMap::with_capacity(_);
+ | ~~~~~~~~~~~~~~~~~~
+LL | let _ = std::collections::HashMap::with_hasher(_);
+ | ~~~~~~~~~~~~~~~~
+LL | let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
+ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+help: consider using the `Default` trait
+ |
+LL | let _ = <std::collections::HashMap as std::default::Default>::default();
+ | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
error[E0423]: cannot initialize a tuple struct which contains private fields
- --> $DIR/suggest-box-new.rs:9:19
+ --> $DIR/suggest-box-new.rs:8:19
|
LL | wtf: Some(Box(U {
| ^^^
@@ -10,11 +34,67 @@ note: constructor is not visible here due to private fields
= note: private field
|
= note: private field
-help: you might have meant to use the `new` associated function
+help: you might have meant to use an associated function to build this type
+ |
+LL | wtf: Some(Box::new(_)),
+ | ~~~~~~~~
+LL | wtf: Some(Box::new_uninit()),
+ | ~~~~~~~~~~~~~~
+LL | wtf: Some(Box::new_zeroed()),
+ | ~~~~~~~~~~~~~~
+LL | wtf: Some(Box::new_in(_, _)),
+ | ~~~~~~~~~~~~~~
+ and 10 other candidates
+help: consider using the `Default` trait
+ |
+LL | wtf: Some(<Box as std::default::Default>::default()),
+ | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+error: cannot construct `HashMap<_, _, _>` with struct literal syntax due to private fields
+ --> $DIR/suggest-box-new.rs:16:13
+ |
+LL | let _ = std::collections::HashMap {};
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: private field `base` that was not provided
+help: you might have meant to use an associated function to build this type
+ |
+LL | let _ = std::collections::HashMap::new();
+ | ~~~~~~~
+LL | let _ = std::collections::HashMap::with_capacity(_);
+ | ~~~~~~~~~~~~~~~~~~
+LL | let _ = std::collections::HashMap::with_hasher(_);
+ | ~~~~~~~~~~~~~~~~
+LL | let _ = std::collections::HashMap::with_capacity_and_hasher(_, _);
+ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+help: consider using the `Default` trait
+ |
+LL | let _ = <std::collections::HashMap as std::default::Default>::default();
+ | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+error: cannot construct `Box<_, _>` with struct literal syntax due to private fields
+ --> $DIR/suggest-box-new.rs:18:13
+ |
+LL | let _ = Box {};
+ | ^^^
+ |
+ = note: private fields `0` and `1` that were not provided
+help: you might have meant to use an associated function to build this type
+ |
+LL | let _ = Box::new(_);
+ | ~~~~~~~~
+LL | let _ = Box::new_uninit();
+ | ~~~~~~~~~~~~~~
+LL | let _ = Box::new_zeroed();
+ | ~~~~~~~~~~~~~~
+LL | let _ = Box::new_in(_, _);
+ | ~~~~~~~~~~~~~~
+ and 10 other candidates
+help: consider using the `Default` trait
|
-LL | wtf: Some(Box::new(U {
- | +++++
+LL | let _ = <Box as std::default::Default>::default();
+ | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-error: aborting due to previous error
+error: aborting due to 4 previous errors
For more information about this error, try `rustc --explain E0423`.
diff --git a/tests/ui/privacy/union-field-privacy-2.stderr b/tests/ui/privacy/union-field-privacy-2.stderr
index bf6a2b625..7b6b84bfd 100644
--- a/tests/ui/privacy/union-field-privacy-2.stderr
+++ b/tests/ui/privacy/union-field-privacy-2.stderr
@@ -4,6 +4,6 @@ error[E0616]: field `c` of union `U` is private
LL | let c = u.c;
| ^ private field
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0616`.
diff --git a/tests/ui/privacy/unresolved-trait-impl-item.rs b/tests/ui/privacy/unresolved-trait-impl-item.rs
new file mode 100644
index 000000000..fea7c462a
--- /dev/null
+++ b/tests/ui/privacy/unresolved-trait-impl-item.rs
@@ -0,0 +1,15 @@
+// edition:2018
+
+trait MyTrait {
+ async fn resolved(&self);
+ const RESOLVED_WRONG: u8 = 0;
+}
+
+impl MyTrait for i32 {
+ async fn resolved(&self) {}
+
+ async fn unresolved(&self) {} //~ ERROR method `unresolved` is not a member of trait `MyTrait`
+ async fn RESOLVED_WRONG() {} //~ ERROR doesn't match its trait `MyTrait`
+}
+
+fn main() {}
diff --git a/tests/ui/privacy/unresolved-trait-impl-item.stderr b/tests/ui/privacy/unresolved-trait-impl-item.stderr
new file mode 100644
index 000000000..588e47c26
--- /dev/null
+++ b/tests/ui/privacy/unresolved-trait-impl-item.stderr
@@ -0,0 +1,22 @@
+error[E0407]: method `unresolved` is not a member of trait `MyTrait`
+ --> $DIR/unresolved-trait-impl-item.rs:11:5
+ |
+LL | async fn unresolved(&self) {}
+ | ^^^^^^^^^----------^^^^^^^^^^
+ | | |
+ | | help: there is an associated function with a similar name: `resolved`
+ | not a member of trait `MyTrait`
+
+error[E0324]: item `RESOLVED_WRONG` is an associated method, which doesn't match its trait `MyTrait`
+ --> $DIR/unresolved-trait-impl-item.rs:12:5
+ |
+LL | const RESOLVED_WRONG: u8 = 0;
+ | ----------------------------- item in trait
+...
+LL | async fn RESOLVED_WRONG() {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ does not match trait
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0324, E0407.
+For more information about an error, try `rustc --explain E0324`.
diff --git a/tests/ui/privacy/where-priv-type.stderr b/tests/ui/privacy/where-priv-type.stderr
index 650766458..126330b14 100644
--- a/tests/ui/privacy/where-priv-type.stderr
+++ b/tests/ui/privacy/where-priv-type.stderr
@@ -77,6 +77,6 @@ LL | type AssocTy = Const<{ my_const_fn(U) }>;
LL | const fn my_const_fn(val: u8) -> u8 {
| ----------------------------------- `fn(u8) -> u8 {my_const_fn}` declared as private
-error: aborting due to previous error; 5 warnings emitted
+error: aborting due to 1 previous error; 5 warnings emitted
For more information about this error, try `rustc --explain E0446`.