From d6f4db2b1b6e7c579a63069156dcab1be7b5ea5b Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sun, 18 Feb 2018 15:40:29 +0100 Subject: [PATCH] IG: don't try to convert hex and octal to float literal (IDEA-186852) --- .../ig/migration/UnnecessaryBoxingInspection.java | 14 ++++++++------ .../fixes/migration/UnnecessaryBoxingFixTest.java | 12 ++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java index 0476d38402e1..4679b524e9a4 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java @@ -138,12 +138,14 @@ public class UnnecessaryBoxingInspection extends BaseInspection { if (unboxedType.equals(PsiType.LONG) && expressionType.equals(PsiType.INT)) { return text + 'L'; } - else if (unboxedType.equals(PsiType.FLOAT) && (expressionType.equals(PsiType.INT) || (expressionType.equals(PsiType.DOUBLE)) && - !StringUtil.endsWithIgnoreCase(text, "d"))) { - return text + 'f'; - } - else if (unboxedType.equals(PsiType.DOUBLE) && expressionType.equals(PsiType.INT)) { - return text + 'd'; + else if (!text.startsWith("0")) { // no octal & hex + if (unboxedType.equals(PsiType.FLOAT) && (expressionType.equals(PsiType.INT) || (expressionType.equals(PsiType.DOUBLE)) && + !StringUtil.endsWithIgnoreCase(text, "d"))) { + return text + 'f'; + } + else if (unboxedType.equals(PsiType.DOUBLE) && expressionType.equals(PsiType.INT)) { + return text + 'd'; + } } } if (ParenthesesUtils.getPrecedence(unboxedExpression) > ParenthesesUtils.TYPE_CAST_PRECEDENCE) { diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java index b44098fb487a..a2d0f96aebe4 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java @@ -74,6 +74,18 @@ public class UnnecessaryBoxingFixTest extends IGQuickFixesTestCase { "\"a\" + (1L - 2L) + \"b\""); } + public void testHex() { + doMemberTest(InspectionGadgetsBundle.message("unnecessary.boxing.remove.quickfix"), + "float f = Float./**/valueOf(0x123);", + "float f = (float) 0x123;"); + } + + public void testOctal() { + doMemberTest(InspectionGadgetsBundle.message("unnecessary.boxing.remove.quickfix"), + "float f = Float.valueOf/**/(0123);", + "float f = (float) 0123;"); + } + public void testCast() { doFixTest(); }