mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 15:11:30 +00:00
d068043891
[`useless_conversion`]: only lint on paths to fn items and fix FP in macro Fixes #11065 (which is actually two issues: an ICE and a false positive) It now makes sure that the function call path points to a function-like item (and not e.g. a `const` like in the linked issue), so that calling `TyCtxt::fn_sig` later in the lint does not ICE (fixes https://github.com/rust-lang/rust-clippy/issues/11065#issuecomment-1616836099). It *also* makes sure that the expression is not part of a macro call (fixes https://github.com/rust-lang/rust-clippy/issues/11065#issuecomment-1616919639). ~~I'm not sure if there's a better way to check this other than to walk the parent expr chain and see if any of them are expansions.~~ (edit: it doesn't do this anymore) changelog: [`useless_conversion`]: fix ICE when call receiver is a non-fn item changelog: [`useless_conversion`]: don't lint if argument is a macro argument (fixes a FP) r? `@llogiq` (reviewed #10814, which introduced these issues)
19 lines
445 B
Rust
19 lines
445 B
Rust
#![warn(clippy::useless_conversion)]
|
|
|
|
use std::iter::FromIterator;
|
|
use std::option::IntoIter as OptionIter;
|
|
|
|
fn eq<T: Eq>(a: T, b: T) -> bool {
|
|
a == b
|
|
}
|
|
|
|
macro_rules! tests {
|
|
($($expr:expr, $ty:ty, ($($test:expr),*);)+) => (pub fn main() {$({
|
|
const C: $ty = $expr;
|
|
assert!(eq(C($($test),*), $expr($($test),*)));
|
|
})+})
|
|
}
|
|
|
|
tests! {
|
|
FromIterator::from_iter, fn(OptionIter<i32>) -> Vec<i32>, (Some(5).into_iter());
|
|
}
|