Update for PR feedback

This commit is contained in:
Tim Robinson 2020-03-20 22:49:15 +00:00
parent 52208f3cf3
commit de9092438d
4 changed files with 189 additions and 85 deletions

View file

@ -1,4 +1,5 @@
use crate::utils::span_lint_and_help; use crate::utils::span_lint_and_then;
use rustc_errors::Applicability;
use rustc_hir::{Item, ItemKind, VisibilityKind}; use rustc_hir::{Item, ItemKind, VisibilityKind};
use rustc_lint::{LateContext, LateLintPass}; use rustc_lint::{LateContext, LateLintPass};
use rustc_session::{declare_tool_lint, impl_lint_pass}; use rustc_session::{declare_tool_lint, impl_lint_pass};
@ -43,12 +44,20 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for RedundantPubCrate {
if let VisibilityKind::Crate { .. } = item.vis.node { if let VisibilityKind::Crate { .. } = item.vis.node {
if !cx.access_levels.is_exported(item.hir_id) { if !cx.access_levels.is_exported(item.hir_id) {
if let Some(false) = self.is_exported.last() { if let Some(false) = self.is_exported.last() {
span_lint_and_help( let span = item.span.with_hi(item.ident.span.hi());
span_lint_and_then(
cx, cx,
REDUNDANT_PUB_CRATE, REDUNDANT_PUB_CRATE,
item.span, span,
&format!("pub(crate) {} inside private module", item.kind.descr()), &format!("pub(crate) {} inside private module", item.kind.descr()),
"consider using `pub` instead of `pub(crate)`", |db| {
db.span_suggestion(
item.vis.span,
"consider using",
"pub".to_string(),
Applicability::MachineApplicable,
);
},
) )
} }
} }

View file

@ -0,0 +1,107 @@
// run-rustfix
#![allow(dead_code)]
#![warn(clippy::redundant_pub_crate)]
mod m1 {
fn f() {}
pub fn g() {} // private due to m1
pub fn h() {}
mod m1_1 {
fn f() {}
pub fn g() {} // private due to m1_1 and m1
pub fn h() {}
}
pub mod m1_2 {
// ^ private due to m1
fn f() {}
pub fn g() {} // private due to m1_2 and m1
pub fn h() {}
}
pub mod m1_3 {
fn f() {}
pub fn g() {} // private due to m1
pub fn h() {}
}
}
pub(crate) mod m2 {
fn f() {}
pub fn g() {} // already crate visible due to m2
pub fn h() {}
mod m2_1 {
fn f() {}
pub fn g() {} // private due to m2_1
pub fn h() {}
}
pub mod m2_2 {
// ^ already crate visible due to m2
fn f() {}
pub fn g() {} // already crate visible due to m2_2 and m2
pub fn h() {}
}
pub mod m2_3 {
fn f() {}
pub fn g() {} // already crate visible due to m2
pub fn h() {}
}
}
pub mod m3 {
fn f() {}
pub(crate) fn g() {} // ok: m3 is exported
pub fn h() {}
mod m3_1 {
fn f() {}
pub fn g() {} // private due to m3_1
pub fn h() {}
}
pub(crate) mod m3_2 {
// ^ ok
fn f() {}
pub fn g() {} // already crate visible due to m3_2
pub fn h() {}
}
pub mod m3_3 {
fn f() {}
pub(crate) fn g() {} // ok: m3 and m3_3 are exported
pub fn h() {}
}
}
mod m4 {
fn f() {}
pub fn g() {} // private: not re-exported by `pub use m4::*`
pub fn h() {}
mod m4_1 {
fn f() {}
pub fn g() {} // private due to m4_1
pub fn h() {}
}
pub mod m4_2 {
// ^ private: not re-exported by `pub use m4::*`
fn f() {}
pub fn g() {} // private due to m4_2
pub fn h() {}
}
pub mod m4_3 {
fn f() {}
pub(crate) fn g() {} // ok: m4_3 is re-exported by `pub use m4::*`
pub fn h() {}
}
}
pub use m4::*;
fn main() {}

View file

@ -1,3 +1,5 @@
// run-rustfix
#![allow(dead_code)]
#![warn(clippy::redundant_pub_crate)] #![warn(clippy::redundant_pub_crate)]
mod m1 { mod m1 {

View file

@ -1,146 +1,132 @@
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:5:5 --> $DIR/redundant_pub_crate.rs:7:5
| |
LL | pub(crate) fn g() {} // private due to m1 LL | pub(crate) fn g() {} // private due to m1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| |
| help: consider using: `pub`
| |
= note: `-D clippy::redundant-pub-crate` implied by `-D warnings` = note: `-D clippy::redundant-pub-crate` implied by `-D warnings`
= help: consider using `pub` instead of `pub(crate)`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:10:9 --> $DIR/redundant_pub_crate.rs:12:9
| |
LL | pub(crate) fn g() {} // private due to m1_1 and m1 LL | pub(crate) fn g() {} // private due to m1_1 and m1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) module inside private module error: pub(crate) module inside private module
--> $DIR/redundant_pub_crate.rs:14:5 --> $DIR/redundant_pub_crate.rs:16:5
| |
LL | / pub(crate) mod m1_2 { LL | pub(crate) mod m1_2 {
LL | | // ^ private due to m1 | ----------^^^^^^^^^
LL | | fn f() {} | |
LL | | pub(crate) fn g() {} // private due to m1_2 and m1 | help: consider using: `pub`
LL | | pub fn h() {}
LL | | }
| |_____^
|
= help: consider using `pub` instead of `pub(crate)`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:17:9 --> $DIR/redundant_pub_crate.rs:19:9
| |
LL | pub(crate) fn g() {} // private due to m1_2 and m1 LL | pub(crate) fn g() {} // private due to m1_2 and m1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:23:9 --> $DIR/redundant_pub_crate.rs:25:9
| |
LL | pub(crate) fn g() {} // private due to m1 LL | pub(crate) fn g() {} // private due to m1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:30:5 --> $DIR/redundant_pub_crate.rs:32:5
| |
LL | pub(crate) fn g() {} // already crate visible due to m2 LL | pub(crate) fn g() {} // already crate visible due to m2
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:35:9 --> $DIR/redundant_pub_crate.rs:37:9
| |
LL | pub(crate) fn g() {} // private due to m2_1 LL | pub(crate) fn g() {} // private due to m2_1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) module inside private module error: pub(crate) module inside private module
--> $DIR/redundant_pub_crate.rs:39:5 --> $DIR/redundant_pub_crate.rs:41:5
| |
LL | / pub(crate) mod m2_2 { LL | pub(crate) mod m2_2 {
LL | | // ^ already crate visible due to m2 | ----------^^^^^^^^^
LL | | fn f() {} | |
LL | | pub(crate) fn g() {} // already crate visible due to m2_2 and m2 | help: consider using: `pub`
LL | | pub fn h() {}
LL | | }
| |_____^
|
= help: consider using `pub` instead of `pub(crate)`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:42:9 --> $DIR/redundant_pub_crate.rs:44:9
| |
LL | pub(crate) fn g() {} // already crate visible due to m2_2 and m2 LL | pub(crate) fn g() {} // already crate visible due to m2_2 and m2
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:48:9 --> $DIR/redundant_pub_crate.rs:50:9
| |
LL | pub(crate) fn g() {} // already crate visible due to m2 LL | pub(crate) fn g() {} // already crate visible due to m2
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:60:9 --> $DIR/redundant_pub_crate.rs:62:9
| |
LL | pub(crate) fn g() {} // private due to m3_1 LL | pub(crate) fn g() {} // private due to m3_1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:67:9 --> $DIR/redundant_pub_crate.rs:69:9
| |
LL | pub(crate) fn g() {} // already crate visible due to m3_2 LL | pub(crate) fn g() {} // already crate visible due to m3_2
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:80:5 --> $DIR/redundant_pub_crate.rs:82:5
| |
LL | pub(crate) fn g() {} // private: not re-exported by `pub use m4::*` LL | pub(crate) fn g() {} // private: not re-exported by `pub use m4::*`
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:85:9 --> $DIR/redundant_pub_crate.rs:87:9
| |
LL | pub(crate) fn g() {} // private due to m4_1 LL | pub(crate) fn g() {} // private due to m4_1
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: pub(crate) module inside private module error: pub(crate) module inside private module
--> $DIR/redundant_pub_crate.rs:89:5 --> $DIR/redundant_pub_crate.rs:91:5
| |
LL | / pub(crate) mod m4_2 { LL | pub(crate) mod m4_2 {
LL | | // ^ private: not re-exported by `pub use m4::*` | ----------^^^^^^^^^
LL | | fn f() {} | |
LL | | pub(crate) fn g() {} // private due to m4_2 | help: consider using: `pub`
LL | | pub fn h() {}
LL | | }
| |_____^
|
= help: consider using `pub` instead of `pub(crate)`
error: pub(crate) function inside private module error: pub(crate) function inside private module
--> $DIR/redundant_pub_crate.rs:92:9 --> $DIR/redundant_pub_crate.rs:94:9
| |
LL | pub(crate) fn g() {} // private due to m4_2 LL | pub(crate) fn g() {} // private due to m4_2
| ^^^^^^^^^^^^^^^^^^^^ | ----------^^^^^
| | |
= help: consider using `pub` instead of `pub(crate)` | help: consider using: `pub`
error: aborting due to 16 previous errors error: aborting due to 16 previous errors