diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilder.java b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilder.java index c2432eb788b..75acd46a836 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilder.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilder.java @@ -108,9 +108,14 @@ public Description matchNewClass(NewClassTree tree, VisitorState state) { parts.add(getOnlyElement(methodInvocationTree.getArguments())); path = parentPath.getParentPath(); } else if (TO_STRING.matches(methodInvocationTree, state)) { + String replacement = replacement(state, parts); + Tree parent = grandParent.getParentPath().getLeaf(); + if (parent instanceof MemberSelectTree memberSelectTree + && memberSelectTree.getExpression().equals(methodInvocationTree)) { + replacement = "(" + replacement + ")"; + } return describeMatch( - methodInvocationTree, - SuggestedFix.replace(methodInvocationTree, replacement(state, parts))); + methodInvocationTree, SuggestedFix.replace(methodInvocationTree, replacement)); } else { // another instance method on StringBuilder return NO_MATCH; diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilderTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilderTest.java index 5bf14ff61e4..2b71cae6039 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilderTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilderTest.java @@ -16,8 +16,6 @@ package com.google.errorprone.bugpatterns; -import static com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode.TEXT_MATCH; - import com.google.errorprone.BugCheckerRefactoringTestHelper; import com.google.errorprone.CompilationTestHelper; import org.junit.Test; @@ -204,7 +202,6 @@ void f() { .doTest(); } - // TODO: b/472686687 - the refactoring should add parens @Test public void needsEnclosingParens() { refactoringHelper @@ -222,15 +219,10 @@ void f(String hello) { """ abstract class Test { void f(String hello) { - hello + 1.getBytes(); + (hello + 1).getBytes(); } } """) - // TODO: b/472686687 - remove allowBreakingChanges when the bug is fixed - .allowBreakingChanges() - // TODO: b/472686687 - remove allowFormattingErrors when the bug is fixed - .allowFormattingErrors() - // TODO: b/472686687 - remove TEXT_MATCH when the bug is fixed - .doTest(TEXT_MATCH); + .doTest(); } }