From f0ef90904af609e8d68650fdd2c8d609ad05d749 Mon Sep 17 00:00:00 2001 From: Stephan Schroevers Date: Tue, 18 Jan 2022 07:57:48 +0100 Subject: [PATCH] AnnotationPosition: avoid IOOBE on annotated `var` keyword usages Fixes #1327. See google/error-prone#2867. --- .../bugpatterns/AnnotationPosition.java | 2 +- .../bugpatterns/AnnotationPositionTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/AnnotationPosition.java b/core/src/main/java/com/google/errorprone/bugpatterns/AnnotationPosition.java index 7438d3e1181..4ef5946a81a 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/AnnotationPosition.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/AnnotationPosition.java @@ -167,7 +167,7 @@ private static List annotationTokens( endPos = state.getEndPosition(methodTree); } } else if (tree instanceof JCVariableDecl) { - endPos = ((JCVariableDecl) tree).getType().getStartPosition(); + endPos = state.getEndPosition(((JCVariableDecl) tree).getModifiers()); } else if (tree instanceof JCClassDecl) { JCClassDecl classTree = (JCClassDecl) tree; endPos = diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/AnnotationPositionTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/AnnotationPositionTest.java index 47fc3fd504b..c369794da57 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/AnnotationPositionTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/AnnotationPositionTest.java @@ -513,4 +513,20 @@ public void parameters_withInterspersedModifiers() { "}") .doTest(TEXT_MATCH); } + + @Test + public void varKeyword() { + refactoringHelper + .addInputLines( + "Test.java", + "import com.google.errorprone.annotations.Var;", + "class T {", + " void m() {", + " @Var var x = 1;", + " x = 2;", + " }", + "}") + .expectUnchanged() + .doTest(TEXT_MATCH); + } }