diff options
| author | Obei Sideg <obei.sideg@gmail.com> | 2023-02-16 22:05:35 +0300 |
|---|---|---|
| committer | Obei Sideg <obei.sideg@gmail.com> | 2023-02-23 13:57:13 +0300 |
| commit | ddd7d1087998ef692e46520d0ceb56a0eb5fd7a6 (patch) | |
| tree | 0dc37ebe6111ebe33e4940f75ed3a5fbd640edbc | |
| parent | a914f37409f0ff0cdee37bfc959d77f91f3bcb0c (diff) | |
| download | rust-ddd7d1087998ef692e46520d0ceb56a0eb5fd7a6.tar.gz rust-ddd7d1087998ef692e46520d0ceb56a0eb5fd7a6.zip | |
Add ui test for `map_unit_fn` lint
| -rw-r--r-- | tests/ui/lint/lint_map_unit_fn.rs | 11 | ||||
| -rw-r--r-- | tests/ui/lint/lint_map_unit_fn.stderr | 25 |
2 files changed, 36 insertions, 0 deletions
diff --git a/tests/ui/lint/lint_map_unit_fn.rs b/tests/ui/lint/lint_map_unit_fn.rs new file mode 100644 index 00000000000..1dae47cd4c6 --- /dev/null +++ b/tests/ui/lint/lint_map_unit_fn.rs @@ -0,0 +1,11 @@ +#![deny(map_unit_fn)] + +fn foo(items: &mut Vec<u8>) { + items.sort(); +} + +fn main() { + let mut x: Vec<Vec<u8>> = vec![vec![0, 2, 1], vec![5, 4, 3]]; + x.iter_mut().map(foo); + //~^ ERROR `Iterator::map` call that discard the iterator's values +} diff --git a/tests/ui/lint/lint_map_unit_fn.stderr b/tests/ui/lint/lint_map_unit_fn.stderr new file mode 100644 index 00000000000..ee300e170b3 --- /dev/null +++ b/tests/ui/lint/lint_map_unit_fn.stderr @@ -0,0 +1,25 @@ +error: `Iterator::map` call that discard the iterator's values + --> $DIR/lint_map_unit_fn.rs:9:18 + | +LL | fn foo(items: &mut Vec<u8>) { + | --------------------------- this function returns `()`, which is likely not what you wanted +... +LL | x.iter_mut().map(foo); + | ^^^^---^ + | | | + | | called `Iterator::map` with callable that returns `()` + | after this call to map, the resulting iterator is `impl Iterator<Item = ()>`, which means the only information carried by the iterator is the number of items + | + = note: `Iterator::map`, like many of the methods on `Iterator`, gets executed lazily, meaning that its effects won't be visible until it is iterated +note: the lint level is defined here + --> $DIR/lint_map_unit_fn.rs:1:9 + | +LL | #![deny(map_unit_fn)] + | ^^^^^^^^^^^ +help: you might have meant to use `Iterator::for_each` + | +LL | x.iter_mut().for_each(foo); + | ~~~~~~~~ + +error: aborting due to previous error + |
