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 --- .../clippy/tests/ui/for_loops_over_fallibles.rs | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/tools/clippy/tests/ui/for_loops_over_fallibles.rs (limited to 'src/tools/clippy/tests/ui/for_loops_over_fallibles.rs') diff --git a/src/tools/clippy/tests/ui/for_loops_over_fallibles.rs b/src/tools/clippy/tests/ui/for_loops_over_fallibles.rs new file mode 100644 index 000000000..3390111d0 --- /dev/null +++ b/src/tools/clippy/tests/ui/for_loops_over_fallibles.rs @@ -0,0 +1,72 @@ +#![warn(clippy::for_loops_over_fallibles)] + +fn for_loops_over_fallibles() { + let option = Some(1); + let mut result = option.ok_or("x not found"); + let v = vec![0, 1, 2]; + + // check over an `Option` + for x in option { + println!("{}", x); + } + + // check over an `Option` + for x in option.iter() { + println!("{}", x); + } + + // check over a `Result` + for x in result { + println!("{}", x); + } + + // check over a `Result` + for x in result.iter_mut() { + println!("{}", x); + } + + // check over a `Result` + for x in result.into_iter() { + println!("{}", x); + } + + for x in option.ok_or("x not found") { + println!("{}", x); + } + + // make sure LOOP_OVER_NEXT lint takes clippy::precedence when next() is the last call + // in the chain + for x in v.iter().next() { + println!("{}", x); + } + + // make sure we lint when next() is not the last call in the chain + for x in v.iter().next().and(Some(0)) { + println!("{}", x); + } + + for x in v.iter().next().ok_or("x not found") { + println!("{}", x); + } + + // check for false positives + + // for loop false positive + for x in v { + println!("{}", x); + } + + // while let false positive for Option + while let Some(x) = option { + println!("{}", x); + break; + } + + // while let false positive for Result + while let Ok(x) = result { + println!("{}", x); + break; + } +} + +fn main() {} -- cgit v1.2.3