From 2ca03e447b85872248fd4ab62ff396a67ebfeda0 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 7 May 2012 10:56:53 +0200 Subject: [PATCH] IDEA-85620 (Inspection "'StringBuffer' can be replaced with 'String'" produces invalid code.) --- .../style/StringBufferReplaceableByStringInspection.java | 4 ++-- .../style/replace_with_string/Precedence2.after.java | 8 ++++++++ .../igfixes/style/replace_with_string/Precedence2.java | 8 ++++++++ .../style/StringBufferReplaceableWithStringFixTest.java | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.java diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java index 25960f0ea918..a209bae56e24 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/StringBufferReplaceableByStringInspection.java @@ -154,7 +154,7 @@ public class StringBufferReplaceableByStringInspection extends BaseInspection { final PsiExpression argument = arguments[0]; if (result.length() != 0) { result.append('+'); - if (ParenthesesUtils.getPrecedence(argument) > ParenthesesUtils.ADDITIVE_PRECEDENCE) { + if (ParenthesesUtils.getPrecedence(argument) >= ParenthesesUtils.ADDITIVE_PRECEDENCE) { result.append('(').append(argument.getText()).append(')'); } else { @@ -167,7 +167,7 @@ public class StringBufferReplaceableByStringInspection extends BaseInspection { result.append("String.valueOf(").append(argument.getText()).append(")"); } else { - if (ParenthesesUtils.getPrecedence(argument) > ParenthesesUtils.ADDITIVE_PRECEDENCE) { + if (ParenthesesUtils.getPrecedence(argument) >= ParenthesesUtils.ADDITIVE_PRECEDENCE) { result.append('(').append(argument.getText()).append(')'); } else { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.after.java new file mode 100644 index 000000000000..0f8f1e00abda --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.after.java @@ -0,0 +1,8 @@ +package com.siyeh.igfixes.style.replace_with_string; + +class Precedence2 { + void foo() { + long start = 0, end = 0; + String string = "Time: " + (end - start) + "."; + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.java new file mode 100644 index 000000000000..0b28ad85d1e7 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/replace_with_string/Precedence2.java @@ -0,0 +1,8 @@ +package com.siyeh.igfixes.style.replace_with_string; + +class Precedence2 { + void foo() { + long start = 0, end = 0; + String string = new StringBuilder().append("Time: ").append(end - start).append(".").toString(); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/StringBufferReplaceableWithStringFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/StringBufferReplaceableWithStringFixTest.java index 03ea2384dee9..1e3acbc4e549 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/StringBufferReplaceableWithStringFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/StringBufferReplaceableWithStringFixTest.java @@ -35,4 +35,5 @@ public class StringBufferReplaceableWithStringFixTest extends IGQuickFixesTestCa public void testStringBufferVariable2() { doTest(); } public void testStartsWithPrimitive() { doTest(); } public void testPrecedence() { doTest("Precedence", InspectionGadgetsBundle.message("string.builder.replaceable.by.string.quickfix")); } + public void testPrecedence2() { doTest("Precedence2", InspectionGadgetsBundle.message("string.builder.replaceable.by.string.quickfix")); } }