privacy: Support #![rustc_effective_visibility]
on the crate root
This commit is contained in:
parent
bf57e8ada6
commit
4695ddf510
3 changed files with 38 additions and 24 deletions
|
@ -2149,6 +2149,7 @@ fn effective_visibilities(tcx: TyCtxt<'_>, (): ()) -> &EffectiveVisibilities {
|
||||||
|
|
||||||
let mut check_visitor =
|
let mut check_visitor =
|
||||||
TestReachabilityVisitor { tcx, effective_visibilities: &visitor.effective_visibilities };
|
TestReachabilityVisitor { tcx, effective_visibilities: &visitor.effective_visibilities };
|
||||||
|
check_visitor.effective_visibility_diagnostic(CRATE_DEF_ID);
|
||||||
tcx.hir().visit_all_item_likes_in_crate(&mut check_visitor);
|
tcx.hir().visit_all_item_likes_in_crate(&mut check_visitor);
|
||||||
|
|
||||||
tcx.arena.alloc(visitor.effective_visibilities)
|
tcx.arena.alloc(visitor.effective_visibilities)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#![rustc_effective_visibility] //~ ERROR Direct: pub, Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
#![feature(rustc_attrs)]
|
#![feature(rustc_attrs)]
|
||||||
|
|
||||||
#[rustc_effective_visibility]
|
#[rustc_effective_visibility]
|
||||||
|
|
|
@ -1,140 +1,152 @@
|
||||||
|
error: Direct: pub, Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
|
--> $DIR/effective_visibilities.rs:1:1
|
||||||
|
|
|
||||||
|
LL | / #![rustc_effective_visibility]
|
||||||
|
LL | | #![feature(rustc_attrs)]
|
||||||
|
LL | |
|
||||||
|
LL | | #[rustc_effective_visibility]
|
||||||
|
... |
|
||||||
|
LL | |
|
||||||
|
LL | | fn main() {}
|
||||||
|
| |____________^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub(crate), ReachableThroughImplTrait: pub(crate)
|
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub(crate), ReachableThroughImplTrait: pub(crate)
|
||||||
--> $DIR/effective_visibilities.rs:4:1
|
--> $DIR/effective_visibilities.rs:5:1
|
||||||
|
|
|
|
||||||
LL | mod outer {
|
LL | mod outer {
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:6:5
|
--> $DIR/effective_visibilities.rs:7:5
|
||||||
|
|
|
|
||||||
LL | pub mod inner1 {
|
LL | pub mod inner1 {
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: not in the table
|
error: not in the table
|
||||||
--> $DIR/effective_visibilities.rs:9:9
|
--> $DIR/effective_visibilities.rs:10:9
|
||||||
|
|
|
|
||||||
LL | extern "C" {}
|
LL | extern "C" {}
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:12:9
|
--> $DIR/effective_visibilities.rs:13:9
|
||||||
|
|
|
|
||||||
LL | pub trait PubTrait {
|
LL | pub trait PubTrait {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(self), Reexported: pub(self), Reachable: pub(self), ReachableThroughImplTrait: pub(self)
|
error: Direct: pub(self), Reexported: pub(self), Reachable: pub(self), ReachableThroughImplTrait: pub(self)
|
||||||
--> $DIR/effective_visibilities.rs:20:9
|
--> $DIR/effective_visibilities.rs:21:9
|
||||||
|
|
|
|
||||||
LL | struct PrivStruct;
|
LL | struct PrivStruct;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(self), Reexported: pub(self), Reachable: pub(self), ReachableThroughImplTrait: pub(self)
|
error: Direct: pub(self), Reexported: pub(self), Reachable: pub(self), ReachableThroughImplTrait: pub(self)
|
||||||
--> $DIR/effective_visibilities.rs:20:9
|
--> $DIR/effective_visibilities.rs:21:9
|
||||||
|
|
|
|
||||||
LL | struct PrivStruct;
|
LL | struct PrivStruct;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:24:9
|
--> $DIR/effective_visibilities.rs:25:9
|
||||||
|
|
|
|
||||||
LL | pub union PubUnion {
|
LL | pub union PubUnion {
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(self), Reexported: pub(self), Reachable: pub(self), ReachableThroughImplTrait: pub(self)
|
error: Direct: pub(self), Reexported: pub(self), Reachable: pub(self), ReachableThroughImplTrait: pub(self)
|
||||||
--> $DIR/effective_visibilities.rs:26:13
|
--> $DIR/effective_visibilities.rs:27:13
|
||||||
|
|
|
|
||||||
LL | a: u8,
|
LL | a: u8,
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:28:13
|
--> $DIR/effective_visibilities.rs:29:13
|
||||||
|
|
|
|
||||||
LL | pub b: u8,
|
LL | pub b: u8,
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:32:9
|
--> $DIR/effective_visibilities.rs:33:9
|
||||||
|
|
|
|
||||||
LL | pub enum Enum {
|
LL | pub enum Enum {
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:34:13
|
--> $DIR/effective_visibilities.rs:35:13
|
||||||
|
|
|
|
||||||
LL | A(
|
LL | A(
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:34:13
|
--> $DIR/effective_visibilities.rs:35:13
|
||||||
|
|
|
|
||||||
LL | A(
|
LL | A(
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:37:17
|
--> $DIR/effective_visibilities.rs:38:17
|
||||||
|
|
|
|
||||||
LL | PubUnion,
|
LL | PubUnion,
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
||||||
error: not in the table
|
error: not in the table
|
||||||
--> $DIR/effective_visibilities.rs:43:5
|
--> $DIR/effective_visibilities.rs:44:5
|
||||||
|
|
|
|
||||||
LL | macro_rules! none_macro {
|
LL | macro_rules! none_macro {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(self), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(self), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:49:5
|
--> $DIR/effective_visibilities.rs:50:5
|
||||||
|
|
|
|
||||||
LL | macro_rules! public_macro {
|
LL | macro_rules! public_macro {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:54:5
|
--> $DIR/effective_visibilities.rs:55:5
|
||||||
|
|
|
|
||||||
LL | pub struct ReachableStruct {
|
LL | pub struct ReachableStruct {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:56:9
|
--> $DIR/effective_visibilities.rs:57:9
|
||||||
|
|
|
|
||||||
LL | pub a: u8,
|
LL | pub a: u8,
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub, Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub, Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:61:9
|
--> $DIR/effective_visibilities.rs:62:9
|
||||||
|
|
|
|
||||||
LL | pub use outer::inner1;
|
LL | pub use outer::inner1;
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:67:5
|
--> $DIR/effective_visibilities.rs:68:5
|
||||||
|
|
|
|
||||||
LL | pub type HalfPublicImport = u8;
|
LL | pub type HalfPublicImport = u8;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub(crate), ReachableThroughImplTrait: pub(crate)
|
error: Direct: pub(crate), Reexported: pub(crate), Reachable: pub(crate), ReachableThroughImplTrait: pub(crate)
|
||||||
--> $DIR/effective_visibilities.rs:70:5
|
--> $DIR/effective_visibilities.rs:71:5
|
||||||
|
|
|
|
||||||
LL | pub(crate) const HalfPublicImport: u8 = 0;
|
LL | pub(crate) const HalfPublicImport: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub, Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub, Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:74:9
|
--> $DIR/effective_visibilities.rs:75:9
|
||||||
|
|
|
|
||||||
LL | pub use half_public_import::HalfPublicImport;
|
LL | pub use half_public_import::HalfPublicImport;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:14:13
|
--> $DIR/effective_visibilities.rs:15:13
|
||||||
|
|
|
|
||||||
LL | const A: i32;
|
LL | const A: i32;
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
error: Direct: pub(crate), Reexported: pub, Reachable: pub, ReachableThroughImplTrait: pub
|
||||||
--> $DIR/effective_visibilities.rs:16:13
|
--> $DIR/effective_visibilities.rs:17:13
|
||||||
|
|
|
|
||||||
LL | type B;
|
LL | type B;
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
|
|
||||||
error: aborting due to 23 previous errors
|
error: aborting due to 24 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue