From ce0f3445fbf469512957bbcb8f1ea9fa5a8ad78d Mon Sep 17 00:00:00 2001 From: ghm Date: Mon, 13 Jan 2025 09:15:55 -0800 Subject: [PATCH] replaceIncludingComments: skip synthetic variable declarations in records. This isn't perfect because it fails to find the canonical constructor as a member, but it'll prevent howling great bugs. PiperOrigin-RevId: 714993354 --- .../java/com/google/errorprone/fixes/SuggestedFixes.java | 7 ++++++- .../errorprone/bugpatterns/inlineme/ValidatorTest.java | 4 +--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java b/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java index 34c1f42ea3d..62c56b6abfa 100644 --- a/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java +++ b/check_api/src/main/java/com/google/errorprone/fixes/SuggestedFixes.java @@ -28,6 +28,7 @@ import static com.google.errorprone.util.ASTHelpers.getStartPosition; import static com.google.errorprone.util.ASTHelpers.getSymbol; import static com.google.errorprone.util.ASTHelpers.hasImplicitType; +import static com.google.errorprone.util.ASTHelpers.isRecord; import static com.sun.source.tree.Tree.Kind.ASSIGNMENT; import static com.sun.source.tree.Tree.Kind.CONDITIONAL_EXPRESSION; import static com.sun.source.tree.Tree.Kind.NEW_ARRAY; @@ -1641,7 +1642,11 @@ public static SuggestedFix replaceIncludingComments( ClassTree classTree = (ClassTree) parent; int startTokenization; for (Tree member : classTree.getMembers()) { - if (member instanceof MethodTree && ASTHelpers.isGeneratedConstructor((MethodTree) member)) { + if (member instanceof MethodTree methodTree + && ASTHelpers.isGeneratedConstructor(methodTree)) { + continue; + } + if (member instanceof VariableTree && isRecord(getSymbol(member))) { continue; } if (member.equals(tree)) { diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/inlineme/ValidatorTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/inlineme/ValidatorTest.java index 3e82160629d..0c29fa42539 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/inlineme/ValidatorTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/inlineme/ValidatorTest.java @@ -1006,7 +1006,6 @@ public long getId() { } } """) - // TODO(kak): we shouldn't delete the closing parenthesis and open curly bracket! .addOutputLines( "Client.java", """ @@ -1015,8 +1014,7 @@ public long getId() { import com.google.errorprone.annotations.InlineMe; public final class Client { - public record SomeRecord(long id - } + public record SomeRecord(long id) {} } """) .doTest(TestMode.TEXT_MATCH);