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.
Test
expect
attribute for tool lints, clippy edition (RFC 2383)
- Loading branch information
Showing
2 changed files
with
182 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
// check-pass | ||
#![feature(lint_reasons)] | ||
//! This file tests the `#[expect]` attribute implementation for tool lints. The same | ||
//! file is used to test clippy and rustdoc. Any changes to this file should be synced | ||
//! to the other test files as well. | ||
//! | ||
//! Expectations: | ||
//! * rustc: only rustc lint expectations are emitted | ||
//! * clippy: rustc and Clippy's expectations are emitted | ||
//! * rustdoc: only rustdoc lint expectations are emitted | ||
//! | ||
//! This test can't cover every lint from Clippy, rustdoc and potentially other | ||
//! tools that will be developed. This therefore only tests a small subset of lints | ||
#![expect(rustdoc::missing_crate_level_docs)] | ||
|
||
mod rustc_ok { | ||
//! See <https://doc.rust-lang.org/rustc/lints/index.html> | ||
#[expect(dead_code)] | ||
pub fn rustc_lints() { | ||
let x = 42.0; | ||
|
||
#[expect(illegal_floating_point_literal_pattern)] | ||
match x { | ||
5.0 => {} | ||
6.0 => {} | ||
_ => {} | ||
} | ||
} | ||
} | ||
|
||
mod rustc_warn { | ||
//! See <https://doc.rust-lang.org/rustc/lints/index.html> | ||
#[expect(dead_code)] | ||
pub fn rustc_lints() { | ||
let x = 42; | ||
|
||
#[expect(illegal_floating_point_literal_pattern)] | ||
match x { | ||
5 => {} | ||
6 => {} | ||
_ => {} | ||
} | ||
} | ||
} | ||
|
||
pub mod rustdoc_ok { | ||
//! See <https://doc.rust-lang.org/rustdoc/lints.html> | ||
#[expect(rustdoc::broken_intra_doc_links)] | ||
/// I want to link to [`Nonexistent`] but it doesn't exist! | ||
pub fn foo() {} | ||
|
||
#[expect(rustdoc::invalid_html_tags)] | ||
/// <h1> | ||
pub fn bar() {} | ||
|
||
#[expect(rustdoc::bare_urls)] | ||
/// http://example.org | ||
pub fn baz() {} | ||
} | ||
|
||
pub mod rustdoc_warn { | ||
//! See <https://doc.rust-lang.org/rustdoc/lints.html> | ||
#[expect(rustdoc::broken_intra_doc_links)] | ||
/// I want to link to [`bar`] but it doesn't exist! | ||
pub fn foo() {} | ||
|
||
#[expect(rustdoc::invalid_html_tags)] | ||
/// <h1></h1> | ||
pub fn bar() {} | ||
|
||
#[expect(rustdoc::bare_urls)] | ||
/// <http://example.org> | ||
pub fn baz() {} | ||
} | ||
|
||
mod clippy_ok { | ||
//! See <https://rust-lang.github.io/rust-clippy/master/index.html> | ||
#[expect(clippy::almost_swapped)] | ||
fn foo() { | ||
let mut a = 0; | ||
let mut b = 9; | ||
a = b; | ||
b = a; | ||
} | ||
|
||
#[expect(clippy::bytes_nth)] | ||
fn bar() { | ||
let _ = "Hello".bytes().nth(3); | ||
} | ||
|
||
#[expect(clippy::if_same_then_else)] | ||
fn baz() { | ||
let _ = if true { 42 } else { 42 }; | ||
} | ||
|
||
#[expect(clippy::logic_bug)] | ||
fn burger() { | ||
let a = false; | ||
let b = true; | ||
|
||
if a && b || a {} | ||
} | ||
} | ||
|
||
mod clippy_warn { | ||
//! See <https://rust-lang.github.io/rust-clippy/master/index.html> | ||
#[expect(clippy::almost_swapped)] | ||
fn foo() { | ||
let mut a = 0; | ||
let mut b = 9; | ||
a = b; | ||
} | ||
|
||
#[expect(clippy::bytes_nth)] | ||
fn bar() { | ||
let _ = "Hello".as_bytes().get(3); | ||
} | ||
|
||
#[expect(clippy::if_same_then_else)] | ||
fn baz() { | ||
let _ = if true { 33 } else { 42 }; | ||
} | ||
|
||
#[expect(clippy::logic_bug)] | ||
fn burger() { | ||
let a = false; | ||
let b = true; | ||
let c = false; | ||
|
||
if a && b || c {} | ||
} | ||
} | ||
|
||
fn main() { | ||
rustc_warn::rustc_lints(); | ||
} |
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,40 @@ | ||
error: this lint expectation is unfulfilled | ||
--> $DIR/expect_tool_lint_rfc_2383.rs:35:14 | ||
| | ||
LL | #[expect(dead_code)] | ||
| ^^^^^^^^^ | ||
| | ||
= note: `-D unfulfilled-lint-expectations` implied by `-D warnings` | ||
|
||
error: this lint expectation is unfulfilled | ||
--> $DIR/expect_tool_lint_rfc_2383.rs:39:18 | ||
| | ||
LL | #[expect(illegal_floating_point_literal_pattern)] | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: this lint expectation is unfulfilled | ||
--> $DIR/expect_tool_lint_rfc_2383.rs:113:14 | ||
| | ||
LL | #[expect(clippy::almost_swapped)] | ||
| ^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: this lint expectation is unfulfilled | ||
--> $DIR/expect_tool_lint_rfc_2383.rs:120:14 | ||
| | ||
LL | #[expect(clippy::bytes_nth)] | ||
| ^^^^^^^^^^^^^^^^^ | ||
|
||
error: this lint expectation is unfulfilled | ||
--> $DIR/expect_tool_lint_rfc_2383.rs:125:14 | ||
| | ||
LL | #[expect(clippy::if_same_then_else)] | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: this lint expectation is unfulfilled | ||
--> $DIR/expect_tool_lint_rfc_2383.rs:130:14 | ||
| | ||
LL | #[expect(clippy::logic_bug)] | ||
| ^^^^^^^^^^^^^^^^^ | ||
|
||
error: aborting due to 6 previous errors | ||
|