Auto merge of #4473 - phansch:fix_cast_lossless_fp, r=flip1995

Fix cast_lossless false positive in impl const fn

Fixes https://github.com/rust-lang/rust-clippy/issues/3656#issuecomment-526387382

changelog: Fix false positive in `cast_lossless`
This commit is contained in:
bors 2019-08-30 20:30:53 +00:00
commit a3fcaee562
5 changed files with 48 additions and 0 deletions

View File

@ -88,6 +88,10 @@ pub fn in_constant(cx: &LateContext<'_, '_>, id: HirId) -> bool {
node: ItemKind::Fn(_, header, ..), node: ItemKind::Fn(_, header, ..),
.. ..
}) => header.constness == Constness::Const, }) => header.constness == Constness::Const,
Node::ImplItem(&ImplItem {
node: ImplItemKind::Method(ref sig, _),
..
}) => sig.header.constness == Constness::Const,
_ => false, _ => false,
} }
} }

View File

@ -32,3 +32,14 @@ fn main() {
const fn abc(input: f32) -> f64 { const fn abc(input: f32) -> f64 {
input as f64 input as f64
} }
// Same as the above issue. We can't suggest `::from` in const fns in impls
mod cast_lossless_in_impl {
struct A;
impl A {
pub const fn convert(x: f32) -> f64 {
x as f64
}
}
}

View File

@ -32,3 +32,14 @@ fn main() {
const fn abc(input: f32) -> f64 { const fn abc(input: f32) -> f64 {
input as f64 input as f64
} }
// Same as the above issue. We can't suggest `::from` in const fns in impls
mod cast_lossless_in_impl {
struct A;
impl A {
pub const fn convert(x: f32) -> f64 {
x as f64
}
}
}

View File

@ -34,3 +34,14 @@ fn main() {
const fn abc(input: u16) -> u32 { const fn abc(input: u16) -> u32 {
input as u32 input as u32
} }
// Same as the above issue. We can't suggest `::from` in const fns in impls
mod cast_lossless_in_impl {
struct A;
impl A {
pub const fn convert(x: u32) -> u64 {
x as u64
}
}
}

View File

@ -34,3 +34,14 @@ fn main() {
const fn abc(input: u16) -> u32 { const fn abc(input: u16) -> u32 {
input as u32 input as u32
} }
// Same as the above issue. We can't suggest `::from` in const fns in impls
mod cast_lossless_in_impl {
struct A;
impl A {
pub const fn convert(x: u32) -> u64 {
x as u64
}
}
}