diff options
| author | bors <bors@rust-lang.org> | 2022-10-17 00:46:36 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-10-17 00:46:36 +0000 |
| commit | 4eaf543b69f433760d30e90ed17423f7e223fdca (patch) | |
| tree | 88445d5bd7263f51672ce4b9526f2898341223cf | |
| parent | 34142fdef1a15fe12ca11265887ea0e9cacd3b63 (diff) | |
| parent | 6f4546a4be7b65da15b3170d72d3339ed1d2aeec (diff) | |
| download | rust-4eaf543b69f433760d30e90ed17423f7e223fdca.tar.gz rust-4eaf543b69f433760d30e90ed17423f7e223fdca.zip | |
Auto merge of #9609 - kraktus:hexa_f32, r=giraffate
[`unnecessary_cast`] Do not lint negative hexadecimal literals when cast as floats fix https://github.com/rust-lang/rust-clippy/issues/9603 changelog: [`unnecessary_cast`] Do not lint negative hexadecimal literals when cast as floats
| -rw-r--r-- | clippy_lints/src/casts/unnecessary_cast.rs | 3 | ||||
| -rw-r--r-- | clippy_utils/src/numeric_literal.rs | 7 | ||||
| -rw-r--r-- | tests/ui/unnecessary_cast.fixed | 4 | ||||
| -rw-r--r-- | tests/ui/unnecessary_cast.rs | 4 |
4 files changed, 12 insertions, 6 deletions
diff --git a/clippy_lints/src/casts/unnecessary_cast.rs b/clippy_lints/src/casts/unnecessary_cast.rs index 21ed7f4844c..c8596987e4d 100644 --- a/clippy_lints/src/casts/unnecessary_cast.rs +++ b/clippy_lints/src/casts/unnecessary_cast.rs @@ -59,9 +59,6 @@ pub(super) fn check<'tcx>( lint_unnecessary_cast(cx, expr, literal_str, cast_from, cast_to); return false; }, - LitKind::Int(_, LitIntType::Unsuffixed) | LitKind::Float(_, LitFloatType::Unsuffixed) => { - return false; - }, LitKind::Int(_, LitIntType::Signed(_) | LitIntType::Unsigned(_)) | LitKind::Float(_, LitFloatType::Suffixed(_)) if cast_from.kind() == cast_to.kind() => diff --git a/clippy_utils/src/numeric_literal.rs b/clippy_utils/src/numeric_literal.rs index 80098d9766c..c5dcd7b31f5 100644 --- a/clippy_utils/src/numeric_literal.rs +++ b/clippy_utils/src/numeric_literal.rs @@ -69,12 +69,13 @@ impl<'a> NumericLiteral<'a> { #[must_use] pub fn new(lit: &'a str, suffix: Option<&'a str>, float: bool) -> Self { + let unsigned_lit = lit.trim_start_matches('-'); // Determine delimiter for radix prefix, if present, and radix. - let radix = if lit.starts_with("0x") { + let radix = if unsigned_lit.starts_with("0x") { Radix::Hexadecimal - } else if lit.starts_with("0b") { + } else if unsigned_lit.starts_with("0b") { Radix::Binary - } else if lit.starts_with("0o") { + } else if unsigned_lit.starts_with("0o") { Radix::Octal } else { Radix::Decimal diff --git a/tests/ui/unnecessary_cast.fixed b/tests/ui/unnecessary_cast.fixed index 94dc9642726..ec8c6abfab9 100644 --- a/tests/ui/unnecessary_cast.fixed +++ b/tests/ui/unnecessary_cast.fixed @@ -111,4 +111,8 @@ mod fixable { let _num = foo(); } + + fn issue_9603() { + let _: f32 = -0x400 as f32; + } } diff --git a/tests/ui/unnecessary_cast.rs b/tests/ui/unnecessary_cast.rs index e5150256f69..5213cdc269b 100644 --- a/tests/ui/unnecessary_cast.rs +++ b/tests/ui/unnecessary_cast.rs @@ -111,4 +111,8 @@ mod fixable { let _num = foo() as f32; } + + fn issue_9603() { + let _: f32 = -0x400 as f32; + } } |
