Skip to content

Commit a82cf62

Browse files
graememorganError Prone Team
authored andcommitted
Add parentheses around replacements in UnnecessaryStringBuilder when necessary.
PiperOrigin-RevId: 871769997
1 parent 8e84edf commit a82cf62

2 files changed

Lines changed: 9 additions & 12 deletions

File tree

core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilder.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,14 @@ public Description matchNewClass(NewClassTree tree, VisitorState state) {
108108
parts.add(getOnlyElement(methodInvocationTree.getArguments()));
109109
path = parentPath.getParentPath();
110110
} else if (TO_STRING.matches(methodInvocationTree, state)) {
111+
String replacement = replacement(state, parts);
112+
Tree parent = grandParent.getParentPath().getLeaf();
113+
if (parent instanceof MemberSelectTree memberSelectTree
114+
&& memberSelectTree.getExpression().equals(methodInvocationTree)) {
115+
replacement = "(" + replacement + ")";
116+
}
111117
return describeMatch(
112-
methodInvocationTree,
113-
SuggestedFix.replace(methodInvocationTree, replacement(state, parts)));
118+
methodInvocationTree, SuggestedFix.replace(methodInvocationTree, replacement));
114119
} else {
115120
// another instance method on StringBuilder
116121
return NO_MATCH;

core/src/test/java/com/google/errorprone/bugpatterns/UnnecessaryStringBuilderTest.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package com.google.errorprone.bugpatterns;
1818

19-
import static com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode.TEXT_MATCH;
20-
2119
import com.google.errorprone.BugCheckerRefactoringTestHelper;
2220
import com.google.errorprone.CompilationTestHelper;
2321
import org.junit.Test;
@@ -204,7 +202,6 @@ void f() {
204202
.doTest();
205203
}
206204

207-
// TODO: b/472686687 - the refactoring should add parens
208205
@Test
209206
public void needsEnclosingParens() {
210207
refactoringHelper
@@ -222,15 +219,10 @@ void f(String hello) {
222219
"""
223220
abstract class Test {
224221
void f(String hello) {
225-
hello + 1.getBytes();
222+
(hello + 1).getBytes();
226223
}
227224
}
228225
""")
229-
// TODO: b/472686687 - remove allowBreakingChanges when the bug is fixed
230-
.allowBreakingChanges()
231-
// TODO: b/472686687 - remove allowFormattingErrors when the bug is fixed
232-
.allowFormattingErrors()
233-
// TODO: b/472686687 - remove TEXT_MATCH when the bug is fixed
234-
.doTest(TEXT_MATCH);
226+
.doTest();
235227
}
236228
}

0 commit comments

Comments
 (0)