From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- .../ui/crate_level_checks/entrypoint_recursion.rs | 11 ++++++++ .../crate_level_checks/entrypoint_recursion.stderr | 11 ++++++++ .../ui/crate_level_checks/no_std_main_recursion.rs | 33 ++++++++++++++++++++++ .../tests/ui/crate_level_checks/no_std_swap.rs | 14 +++++++++ .../tests/ui/crate_level_checks/no_std_swap.stderr | 12 ++++++++ .../ui/crate_level_checks/std_main_recursion.rs | 6 ++++ .../crate_level_checks/std_main_recursion.stderr | 11 ++++++++ 7 files changed, 98 insertions(+) create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.rs create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.stderr create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.rs create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.stderr create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.rs create mode 100644 src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.stderr (limited to 'src/tools/clippy/tests/ui/crate_level_checks') diff --git a/src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.rs b/src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.rs new file mode 100644 index 000000000..1b3bcece6 --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.rs @@ -0,0 +1,11 @@ +// ignore-macos + +#![feature(rustc_attrs)] + +#[warn(clippy::main_recursion)] +#[allow(unconditional_recursion)] +#[rustc_main] +fn a() { + println!("Hello, World!"); + a(); +} diff --git a/src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.stderr b/src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.stderr new file mode 100644 index 000000000..459cf12a1 --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/entrypoint_recursion.stderr @@ -0,0 +1,11 @@ +error: recursing into entrypoint `a` + --> $DIR/entrypoint_recursion.rs:10:5 + | +LL | a(); + | ^ + | + = note: `-D clippy::main-recursion` implied by `-D warnings` + = help: consider using another function for this recursion + +error: aborting due to previous error + diff --git a/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs b/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs new file mode 100644 index 000000000..4a5c597dd --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/no_std_main_recursion.rs @@ -0,0 +1,33 @@ +// compile-flags: -Clink-arg=-nostartfiles +// ignore-macos +// ignore-windows + +#![feature(lang_items, start, libc)] +#![no_std] + +use core::panic::PanicInfo; +use core::sync::atomic::{AtomicUsize, Ordering}; + +static N: AtomicUsize = AtomicUsize::new(0); + +#[warn(clippy::main_recursion)] +#[start] +fn main(_argc: isize, _argv: *const *const u8) -> isize { + let x = N.load(Ordering::Relaxed); + N.store(x + 1, Ordering::Relaxed); + + if x < 3 { + main(_argc, _argv); + } + + 0 +} + +#[allow(clippy::empty_loop)] +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + loop {} +} + +#[lang = "eh_personality"] +extern "C" fn eh_personality() {} diff --git a/src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.rs b/src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.rs new file mode 100644 index 000000000..d3571eaf0 --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.rs @@ -0,0 +1,14 @@ +#![no_std] +#![feature(lang_items, start, libc)] +#![crate_type = "lib"] + +use core::panic::PanicInfo; + +#[warn(clippy::all)] +fn main() { + let mut a = 42; + let mut b = 1337; + + a = b; + b = a; +} diff --git a/src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.stderr b/src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.stderr new file mode 100644 index 000000000..48152d8ad --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/no_std_swap.stderr @@ -0,0 +1,12 @@ +error: this looks like you are trying to swap `a` and `b` + --> $DIR/no_std_swap.rs:12:5 + | +LL | / a = b; +LL | | b = a; + | |_________^ help: try: `core::mem::swap(&mut a, &mut b)` + | + = note: `-D clippy::almost-swapped` implied by `-D warnings` + = note: or maybe you should use `core::mem::replace`? + +error: aborting due to previous error + diff --git a/src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.rs b/src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.rs new file mode 100644 index 000000000..89ff66099 --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.rs @@ -0,0 +1,6 @@ +#[warn(clippy::main_recursion)] +#[allow(unconditional_recursion)] +fn main() { + println!("Hello, World!"); + main(); +} diff --git a/src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.stderr b/src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.stderr new file mode 100644 index 000000000..0a260f9d2 --- /dev/null +++ b/src/tools/clippy/tests/ui/crate_level_checks/std_main_recursion.stderr @@ -0,0 +1,11 @@ +error: recursing into entrypoint `main` + --> $DIR/std_main_recursion.rs:5:5 + | +LL | main(); + | ^^^^ + | + = note: `-D clippy::main-recursion` implied by `-D warnings` + = help: consider using another function for this recursion + +error: aborting due to previous error + -- cgit v1.2.3