//@ check-pass //! 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)] //~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations] //~| NOTE `#[warn(unfulfilled_lint_expectations)]` on by default mod rustc_ok { //! See #[expect(dead_code)] pub fn rustc_lints() { let x = 42.0; #[expect(invalid_nan_comparisons)] match x { f32::NAN => {} _ => {} } } } mod rustc_warn { //! See #[expect(dead_code)] pub fn rustc_lints() { let x = 42; #[expect(invalid_nan_comparisons)] match x { 5 => {} 6 => {} _ => {} } } } pub mod rustdoc_ok { //! See #[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)] ///

pub fn bar() {} #[expect(rustdoc::bare_urls)] /// http://example.org pub fn baz() {} } pub mod rustdoc_warn { //! See #[expect(rustdoc::broken_intra_doc_links)] //~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations] /// I want to link to [`bar`] but it doesn't exist! pub fn foo() {} #[expect(rustdoc::invalid_html_tags)] //~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations] ///

pub fn bar() {} #[expect(rustdoc::bare_urls)] //~^ WARNING this lint expectation is unfulfilled [unfulfilled_lint_expectations] /// pub fn baz() {} } mod clippy_ok { //! See #[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 #[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(); }