Clarify error messages caused by re-exporting pub(crate)
visibility to outside
This commit is contained in:
parent
d22dd65835
commit
33ab5123e2
11 changed files with 334 additions and 32 deletions
|
@ -1180,11 +1180,17 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
|
||||||
|
|
||||||
let mut reexport_error = None;
|
let mut reexport_error = None;
|
||||||
let mut any_successful_reexport = false;
|
let mut any_successful_reexport = false;
|
||||||
|
let mut crate_private_reexport = false;
|
||||||
self.r.per_ns(|this, ns| {
|
self.r.per_ns(|this, ns| {
|
||||||
if let Ok(binding) = source_bindings[ns].get() {
|
if let Ok(binding) = source_bindings[ns].get() {
|
||||||
let vis = import.vis.get();
|
let vis = import.vis.get();
|
||||||
if !binding.vis.is_at_least(vis, &*this) {
|
if !binding.vis.is_at_least(vis, &*this) {
|
||||||
reexport_error = Some((ns, binding));
|
reexport_error = Some((ns, binding));
|
||||||
|
if let ty::Visibility::Restricted(binding_def_id) = binding.vis {
|
||||||
|
if binding_def_id.is_top_level_module() {
|
||||||
|
crate_private_reexport = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
any_successful_reexport = true;
|
any_successful_reexport = true;
|
||||||
}
|
}
|
||||||
|
@ -1207,24 +1213,34 @@ impl<'a, 'b> ImportResolver<'a, 'b> {
|
||||||
import.span,
|
import.span,
|
||||||
&msg,
|
&msg,
|
||||||
);
|
);
|
||||||
} else if ns == TypeNS {
|
|
||||||
struct_span_err!(
|
|
||||||
self.r.session,
|
|
||||||
import.span,
|
|
||||||
E0365,
|
|
||||||
"`{}` is private, and cannot be re-exported",
|
|
||||||
ident
|
|
||||||
)
|
|
||||||
.span_label(import.span, format!("re-export of private `{}`", ident))
|
|
||||||
.note(&format!("consider declaring type or module `{}` with `pub`", ident))
|
|
||||||
.emit();
|
|
||||||
} else {
|
} else {
|
||||||
let msg = format!("`{}` is private, and cannot be re-exported", ident);
|
let error_msg = if crate_private_reexport {
|
||||||
let note_msg =
|
format!(
|
||||||
format!("consider marking `{}` as `pub` in the imported module", ident,);
|
"`{}` is only public within the crate, and cannot be re-exported outside",
|
||||||
struct_span_err!(self.r.session, import.span, E0364, "{}", &msg)
|
ident
|
||||||
.span_note(import.span, ¬e_msg)
|
)
|
||||||
.emit();
|
} else {
|
||||||
|
format!("`{}` is private, and cannot be re-exported", ident)
|
||||||
|
};
|
||||||
|
|
||||||
|
if ns == TypeNS {
|
||||||
|
let label_msg = if crate_private_reexport {
|
||||||
|
format!("re-export of crate public `{}`", ident)
|
||||||
|
} else {
|
||||||
|
format!("re-export of private `{}`", ident)
|
||||||
|
};
|
||||||
|
|
||||||
|
struct_span_err!(self.r.session, import.span, E0365, "{}", error_msg)
|
||||||
|
.span_label(import.span, label_msg)
|
||||||
|
.note(&format!("consider declaring type or module `{}` with `pub`", ident))
|
||||||
|
.emit();
|
||||||
|
} else {
|
||||||
|
let note_msg =
|
||||||
|
format!("consider marking `{}` as `pub` in the imported module", ident);
|
||||||
|
struct_span_err!(self.r.session, import.span, E0364, "{}", error_msg)
|
||||||
|
.span_note(import.span, ¬e_msg)
|
||||||
|
.emit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,6 @@ mod foo {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use foo as foo2;
|
pub use foo as foo2;
|
||||||
//~^ ERROR `foo` is private, and cannot be re-exported [E0365]
|
//~^ ERROR `foo` is only public within the crate, and cannot be re-exported outside [E0365]
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
error[E0365]: `foo` is private, and cannot be re-exported
|
error[E0365]: `foo` is only public within the crate, and cannot be re-exported outside
|
||||||
--> $DIR/E0365.rs:5:9
|
--> $DIR/E0365.rs:5:9
|
||||||
|
|
|
|
||||||
LL | pub use foo as foo2;
|
LL | pub use foo as foo2;
|
||||||
| ^^^^^^^^^^^ re-export of private `foo`
|
| ^^^^^^^^^^^ re-export of crate public `foo`
|
||||||
|
|
|
|
||||||
= note: consider declaring type or module `foo` with `pub`
|
= note: consider declaring type or module `foo` with `pub`
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ macro_rules! import {
|
||||||
mod $name;
|
mod $name;
|
||||||
pub use self::$name;
|
pub use self::$name;
|
||||||
//~^ ERROR the name `issue_56411_aux` is defined multiple times
|
//~^ ERROR the name `issue_56411_aux` is defined multiple times
|
||||||
//~| ERROR `issue_56411_aux` is private, and cannot be re-exported
|
//~| ERROR `issue_56411_aux` is only public within the crate, and cannot be re-exported outside
|
||||||
|
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,11 @@ LL | import!(("issue-56411-aux.rs", issue_56411_aux));
|
||||||
= note: `issue_56411_aux` must be defined only once in the type namespace of this module
|
= note: `issue_56411_aux` must be defined only once in the type namespace of this module
|
||||||
= note: this error originates in the macro `import` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `import` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error[E0365]: `issue_56411_aux` is private, and cannot be re-exported
|
error[E0365]: `issue_56411_aux` is only public within the crate, and cannot be re-exported outside
|
||||||
--> $DIR/issue-56411.rs:6:21
|
--> $DIR/issue-56411.rs:6:21
|
||||||
|
|
|
|
||||||
LL | pub use self::$name;
|
LL | pub use self::$name;
|
||||||
| ^^^^^^^^^^^ re-export of private `issue_56411_aux`
|
| ^^^^^^^^^^^ re-export of crate public `issue_56411_aux`
|
||||||
...
|
...
|
||||||
LL | import!(("issue-56411-aux.rs", issue_56411_aux));
|
LL | import!(("issue-56411-aux.rs", issue_56411_aux));
|
||||||
| ------------------------------------------------ in this macro invocation
|
| ------------------------------------------------ in this macro invocation
|
||||||
|
|
66
src/test/ui/privacy/crate-private-reexport.rs
Normal file
66
src/test/ui/privacy/crate-private-reexport.rs
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
fn f1() {}
|
||||||
|
enum E1 { V }
|
||||||
|
struct S1 {
|
||||||
|
#[rustfmt::skip]
|
||||||
|
bar: i32,
|
||||||
|
}
|
||||||
|
mod m1 {
|
||||||
|
pub use ::f1; //~ ERROR `f1` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use ::S1; //~ ERROR `S1` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use ::E1; //~ ERROR `E1` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use ::E1::V; //~ ERROR `V` is only public within the crate, and cannot be re-exported outside
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn f2() {}
|
||||||
|
pub(crate) enum E2 {
|
||||||
|
V
|
||||||
|
}
|
||||||
|
pub(crate) struct S2 {
|
||||||
|
#[rustfmt::skip]
|
||||||
|
bar: i32,
|
||||||
|
}
|
||||||
|
mod m2 {
|
||||||
|
pub use ::f2; //~ ERROR `f2` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use ::S2; //~ ERROR `S2` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use ::E2; //~ ERROR `E2` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use ::E2::V; //~ ERROR `V` is only public within the crate, and cannot be re-exported outside
|
||||||
|
}
|
||||||
|
|
||||||
|
mod m3 {
|
||||||
|
pub(crate) fn f3() {}
|
||||||
|
pub(crate) enum E3 {
|
||||||
|
V
|
||||||
|
}
|
||||||
|
pub(crate) struct S3 {
|
||||||
|
#[rustfmt::skip]
|
||||||
|
bar: i32,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub use m3::f3; //~ ERROR `f3` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use m3::S3; //~ ERROR `S3` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use m3::E3; //~ ERROR `E3` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use m3::E3::V; //~ ERROR `V` is only public within the crate, and cannot be re-exported outside
|
||||||
|
|
||||||
|
pub(self) fn f4() {}
|
||||||
|
pub use ::f4 as f5; //~ ERROR `f4` is only public within the crate, and cannot be re-exported outside
|
||||||
|
|
||||||
|
pub mod m10 {
|
||||||
|
pub mod m {
|
||||||
|
pub(super) fn f6() {}
|
||||||
|
pub(crate) fn f7() {}
|
||||||
|
pub(in crate::m10) fn f8() {}
|
||||||
|
}
|
||||||
|
pub use self::m::f6; //~ ERROR `f6` is private, and cannot be re-exported
|
||||||
|
pub use self::m::f7; //~ ERROR `f7` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use self::m::f8; //~ ERROR `f8` is private, and cannot be re-exported
|
||||||
|
}
|
||||||
|
pub use m10::m::f6; //~ ERROR function `f6` is private
|
||||||
|
pub use m10::m::f7; //~ ERROR `f7` is only public within the crate, and cannot be re-exported outside
|
||||||
|
pub use m10::m::f8; //~ ERROR function `f8` is private
|
||||||
|
|
||||||
|
pub mod m11 {
|
||||||
|
pub(self) fn f9() {}
|
||||||
|
}
|
||||||
|
pub use m11::f9; //~ ERROR function `f9` is private
|
||||||
|
|
||||||
|
fn main() {}
|
220
src/test/ui/privacy/crate-private-reexport.stderr
Normal file
220
src/test/ui/privacy/crate-private-reexport.stderr
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
error[E0364]: `f1` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:8:13
|
||||||
|
|
|
||||||
|
LL | pub use ::f1;
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f1` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:8:13
|
||||||
|
|
|
||||||
|
LL | pub use ::f1;
|
||||||
|
| ^^^^
|
||||||
|
|
||||||
|
error[E0365]: `S1` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:9:13
|
||||||
|
|
|
||||||
|
LL | pub use ::S1;
|
||||||
|
| ^^^^ re-export of crate public `S1`
|
||||||
|
|
|
||||||
|
= note: consider declaring type or module `S1` with `pub`
|
||||||
|
|
||||||
|
error[E0365]: `E1` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:10:13
|
||||||
|
|
|
||||||
|
LL | pub use ::E1;
|
||||||
|
| ^^^^ re-export of crate public `E1`
|
||||||
|
|
|
||||||
|
= note: consider declaring type or module `E1` with `pub`
|
||||||
|
|
||||||
|
error[E0364]: `V` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:11:13
|
||||||
|
|
|
||||||
|
LL | pub use ::E1::V;
|
||||||
|
| ^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `V` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:11:13
|
||||||
|
|
|
||||||
|
LL | pub use ::E1::V;
|
||||||
|
| ^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f2` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:23:13
|
||||||
|
|
|
||||||
|
LL | pub use ::f2;
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f2` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:23:13
|
||||||
|
|
|
||||||
|
LL | pub use ::f2;
|
||||||
|
| ^^^^
|
||||||
|
|
||||||
|
error[E0365]: `S2` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:24:13
|
||||||
|
|
|
||||||
|
LL | pub use ::S2;
|
||||||
|
| ^^^^ re-export of crate public `S2`
|
||||||
|
|
|
||||||
|
= note: consider declaring type or module `S2` with `pub`
|
||||||
|
|
||||||
|
error[E0365]: `E2` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:25:13
|
||||||
|
|
|
||||||
|
LL | pub use ::E2;
|
||||||
|
| ^^^^ re-export of crate public `E2`
|
||||||
|
|
|
||||||
|
= note: consider declaring type or module `E2` with `pub`
|
||||||
|
|
||||||
|
error[E0364]: `V` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:26:13
|
||||||
|
|
|
||||||
|
LL | pub use ::E2::V;
|
||||||
|
| ^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `V` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:26:13
|
||||||
|
|
|
||||||
|
LL | pub use ::E2::V;
|
||||||
|
| ^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f3` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:39:9
|
||||||
|
|
|
||||||
|
LL | pub use m3::f3;
|
||||||
|
| ^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f3` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:39:9
|
||||||
|
|
|
||||||
|
LL | pub use m3::f3;
|
||||||
|
| ^^^^^^
|
||||||
|
|
||||||
|
error[E0365]: `S3` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:40:9
|
||||||
|
|
|
||||||
|
LL | pub use m3::S3;
|
||||||
|
| ^^^^^^ re-export of crate public `S3`
|
||||||
|
|
|
||||||
|
= note: consider declaring type or module `S3` with `pub`
|
||||||
|
|
||||||
|
error[E0365]: `E3` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:41:9
|
||||||
|
|
|
||||||
|
LL | pub use m3::E3;
|
||||||
|
| ^^^^^^ re-export of crate public `E3`
|
||||||
|
|
|
||||||
|
= note: consider declaring type or module `E3` with `pub`
|
||||||
|
|
||||||
|
error[E0364]: `V` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:42:9
|
||||||
|
|
|
||||||
|
LL | pub use m3::E3::V;
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `V` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:42:9
|
||||||
|
|
|
||||||
|
LL | pub use m3::E3::V;
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f4` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:45:9
|
||||||
|
|
|
||||||
|
LL | pub use ::f4 as f5;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f4` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:45:9
|
||||||
|
|
|
||||||
|
LL | pub use ::f4 as f5;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f6` is private, and cannot be re-exported
|
||||||
|
--> $DIR/crate-private-reexport.rs:53:13
|
||||||
|
|
|
||||||
|
LL | pub use self::m::f6;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f6` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:53:13
|
||||||
|
|
|
||||||
|
LL | pub use self::m::f6;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f7` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:54:13
|
||||||
|
|
|
||||||
|
LL | pub use self::m::f7;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f7` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:54:13
|
||||||
|
|
|
||||||
|
LL | pub use self::m::f7;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f8` is private, and cannot be re-exported
|
||||||
|
--> $DIR/crate-private-reexport.rs:55:13
|
||||||
|
|
|
||||||
|
LL | pub use self::m::f8;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f8` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:55:13
|
||||||
|
|
|
||||||
|
LL | pub use self::m::f8;
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0364]: `f7` is only public within the crate, and cannot be re-exported outside
|
||||||
|
--> $DIR/crate-private-reexport.rs:58:9
|
||||||
|
|
|
||||||
|
LL | pub use m10::m::f7;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: consider marking `f7` as `pub` in the imported module
|
||||||
|
--> $DIR/crate-private-reexport.rs:58:9
|
||||||
|
|
|
||||||
|
LL | pub use m10::m::f7;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0603]: function `f6` is private
|
||||||
|
--> $DIR/crate-private-reexport.rs:57:17
|
||||||
|
|
|
||||||
|
LL | pub use m10::m::f6;
|
||||||
|
| ^^ private function
|
||||||
|
|
|
||||||
|
note: the function `f6` is defined here
|
||||||
|
--> $DIR/crate-private-reexport.rs:49:9
|
||||||
|
|
|
||||||
|
LL | pub(super) fn f6() {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0603]: function `f8` is private
|
||||||
|
--> $DIR/crate-private-reexport.rs:59:17
|
||||||
|
|
|
||||||
|
LL | pub use m10::m::f8;
|
||||||
|
| ^^ private function
|
||||||
|
|
|
||||||
|
note: the function `f8` is defined here
|
||||||
|
--> $DIR/crate-private-reexport.rs:51:9
|
||||||
|
|
|
||||||
|
LL | pub(in crate::m10) fn f8() {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error[E0603]: function `f9` is private
|
||||||
|
--> $DIR/crate-private-reexport.rs:64:14
|
||||||
|
|
|
||||||
|
LL | pub use m11::f9;
|
||||||
|
| ^^ private function
|
||||||
|
|
|
||||||
|
note: the function `f9` is defined here
|
||||||
|
--> $DIR/crate-private-reexport.rs:62:5
|
||||||
|
|
|
||||||
|
LL | pub(self) fn f9() {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 20 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0364, E0365, E0603.
|
||||||
|
For more information about an error, try `rustc --explain E0364`.
|
|
@ -1,13 +1,13 @@
|
||||||
mod m1 {
|
mod m1 {
|
||||||
pub use ::E::V; //~ ERROR `V` is private, and cannot be re-exported
|
pub use ::E::V; //~ ERROR `V` is only public within the crate, and cannot be re-exported outside
|
||||||
}
|
}
|
||||||
|
|
||||||
mod m2 {
|
mod m2 {
|
||||||
pub use ::E::{V}; //~ ERROR `V` is private, and cannot be re-exported
|
pub use ::E::{V}; //~ ERROR `V` is only public within the crate, and cannot be re-exported outside
|
||||||
}
|
}
|
||||||
|
|
||||||
mod m3 {
|
mod m3 {
|
||||||
pub use ::E::V::{self}; //~ ERROR `V` is private, and cannot be re-exported
|
pub use ::E::V::{self}; //~ ERROR `V` is only public within the crate, and cannot be re-exported outside
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deny(unused_imports)]
|
#[deny(unused_imports)]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0364]: `V` is private, and cannot be re-exported
|
error[E0364]: `V` is only public within the crate, and cannot be re-exported outside
|
||||||
--> $DIR/private-variant-reexport.rs:2:13
|
--> $DIR/private-variant-reexport.rs:2:13
|
||||||
|
|
|
|
||||||
LL | pub use ::E::V;
|
LL | pub use ::E::V;
|
||||||
|
@ -10,7 +10,7 @@ note: consider marking `V` as `pub` in the imported module
|
||||||
LL | pub use ::E::V;
|
LL | pub use ::E::V;
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
|
|
||||||
error[E0364]: `V` is private, and cannot be re-exported
|
error[E0364]: `V` is only public within the crate, and cannot be re-exported outside
|
||||||
--> $DIR/private-variant-reexport.rs:6:19
|
--> $DIR/private-variant-reexport.rs:6:19
|
||||||
|
|
|
|
||||||
LL | pub use ::E::{V};
|
LL | pub use ::E::{V};
|
||||||
|
@ -22,11 +22,11 @@ note: consider marking `V` as `pub` in the imported module
|
||||||
LL | pub use ::E::{V};
|
LL | pub use ::E::{V};
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error[E0365]: `V` is private, and cannot be re-exported
|
error[E0365]: `V` is only public within the crate, and cannot be re-exported outside
|
||||||
--> $DIR/private-variant-reexport.rs:10:22
|
--> $DIR/private-variant-reexport.rs:10:22
|
||||||
|
|
|
|
||||||
LL | pub use ::E::V::{self};
|
LL | pub use ::E::V::{self};
|
||||||
| ^^^^ re-export of private `V`
|
| ^^^^ re-export of crate public `V`
|
||||||
|
|
|
|
||||||
= note: consider declaring type or module `V` with `pub`
|
= note: consider declaring type or module `V` with `pub`
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ mod m1 {
|
||||||
|
|
||||||
use legacy_macro as _; // OK
|
use legacy_macro as _; // OK
|
||||||
pub(crate) use legacy_macro as _; // OK
|
pub(crate) use legacy_macro as _; // OK
|
||||||
pub use legacy_macro as _; //~ ERROR `legacy_macro` is private, and cannot be re-exported
|
pub use legacy_macro as _; //~ ERROR `legacy_macro` is only public within the crate, and cannot be re-exported outside
|
||||||
}
|
}
|
||||||
|
|
||||||
mod m2 {
|
mod m2 {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0364]: `legacy_macro` is private, and cannot be re-exported
|
error[E0364]: `legacy_macro` is only public within the crate, and cannot be re-exported outside
|
||||||
--> $DIR/macro-rules.rs:11:13
|
--> $DIR/macro-rules.rs:11:13
|
||||||
|
|
|
|
||||||
LL | pub use legacy_macro as _;
|
LL | pub use legacy_macro as _;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue