forked from rust-lang/rust-clippy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes rust-lang#9677 - Lint against mod lib;
- Loading branch information
Showing
11 changed files
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
use clippy_utils::diagnostics::span_lint_and_help; | ||
use rustc_ast::{ptr::P, Crate, Item, ItemKind, ModKind}; | ||
use rustc_lint::{EarlyContext, EarlyLintPass}; | ||
use rustc_session::{declare_lint_pass, declare_tool_lint}; | ||
use rustc_span::sym; | ||
|
||
declare_clippy_lint! { | ||
/// ### What it does | ||
/// | ||
/// ### Why is this bad? | ||
/// | ||
/// ### Example | ||
/// ```rust | ||
/// // example code where clippy issues a warning | ||
/// ``` | ||
/// Use instead: | ||
/// ```rust | ||
/// // example code which does not raise clippy warning | ||
/// ``` | ||
#[clippy::version = "1.66.0"] | ||
pub MOD_LIB, | ||
pedantic, | ||
"default lint description" | ||
} | ||
declare_lint_pass!(ModLib => [MOD_LIB]); | ||
|
||
impl EarlyLintPass for ModLib { | ||
fn check_crate(&mut self, cx: &EarlyContext<'_>, krate: &Crate) { | ||
// println!("MOO Checking crate {:#?}", krate); | ||
check_mod(cx, &krate.items); | ||
} | ||
} | ||
|
||
fn check_mod(cx: &EarlyContext<'_>, items: &[P<Item>]) { | ||
for item in items { | ||
if let ItemKind::Mod(_, ModKind::Loaded(..)) = item.kind { | ||
// println!("MOO Got a Mod: {:#?}", items); | ||
// println!("MOO Got a Mod: {:#?}", item.ident.name); | ||
|
||
if item.ident.name == sym::lib { | ||
span_lint_and_help( | ||
cx, | ||
MOD_LIB, | ||
item.span, | ||
"uncommon use of mod::lib", | ||
None, | ||
"you probably meant use::package instead", | ||
); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
### What it does | ||
|
||
### Why is this bad? | ||
|
||
### Example | ||
``` | ||
// example code where clippy issues a warning | ||
``` | ||
Use instead: | ||
``` | ||
// example code which does not raise clippy warning | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
pub fn something() -> i32 { | ||
42 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
error[E0601]: `main` function not found in crate `lib` | ||
--> $DIR/lib.rs:3:2 | ||
| | ||
LL | } | ||
| ^ consider adding a `main` function to `$DIR/lib.rs` | ||
|
||
error: aborting due to previous error | ||
|
||
For more information about this error, try `rustc --explain E0601`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#![allow(unused)] | ||
#![warn(clippy::mod_lib)] | ||
|
||
mod lib; | ||
|
||
fn main() { | ||
println!("{}", lib::something()); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
error: found module declaration for lib.rs | ||
--> $DIR/main.rs:4:1 | ||
| | ||
LL | mod lib; | ||
| ^^^^^^^^ | ||
| | ||
= note: lib.rs is the root of this crate's library target | ||
= help: to refer to it from other targets, use the library's name as the path | ||
= note: `-D special-module-name` implied by `-D warnings` | ||
|
||
error: uncommon use of mod::lib | ||
--> $DIR/main.rs:4:1 | ||
| | ||
LL | mod lib; | ||
| ^^^^^^^^ | ||
| | ||
= help: you probably meant use::package instead | ||
= note: `-D clippy::mod-lib` implied by `-D warnings` | ||
|
||
error: aborting due to 2 previous errors | ||
|