Issue #5327: fixed finding annotation name with comment embedded
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtility.java b/src/main/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtility.java
index bb673e9..a36d609 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtility.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtility.java
@@ -155,7 +155,7 @@
for (DetailAST child = holder.getFirstChild();
child != null; child = child.getNextSibling()) {
if (child.getType() == TokenTypes.ANNOTATION) {
- final DetailAST firstChild = child.getFirstChild();
+ final DetailAST firstChild = child.findFirstToken(TokenTypes.AT);
final String name =
FullIdent.createFullIdent(firstChild.getNextSibling()).getText();
if (annotation.equals(name)) {
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtilityTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtilityTest.java
index 090b2d3..a000ea5 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtilityTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/utils/AnnotationUtilityTest.java
@@ -173,6 +173,7 @@
final DetailAST annotationName = new DetailAST();
annotations.setType(TokenTypes.ANNOTATIONS);
annotation.setType(TokenTypes.ANNOTATION);
+ annotationNameHolder.setType(TokenTypes.AT);
annotationName.setText("Annotation");
annotationNameHolder.setNextSibling(annotationName);
@@ -184,4 +185,31 @@
assertTrue("Annotation should contain " + astForTest,
AnnotationUtility.containsAnnotation(astForTest, "Annotation"));
}
+
+ @Test
+ public void testContainsAnnotationWithComment() {
+ final DetailAST astForTest = new DetailAST();
+ astForTest.setType(TokenTypes.PACKAGE_DEF);
+ final DetailAST child = new DetailAST();
+ final DetailAST annotations = new DetailAST();
+ final DetailAST annotation = new DetailAST();
+ final DetailAST annotationNameHolder = new DetailAST();
+ final DetailAST annotationName = new DetailAST();
+ final DetailAST comment = new DetailAST();
+ annotations.setType(TokenTypes.ANNOTATIONS);
+ annotation.setType(TokenTypes.ANNOTATION);
+ annotationNameHolder.setType(TokenTypes.AT);
+ comment.setType(TokenTypes.BLOCK_COMMENT_BEGIN);
+ annotationName.setText("Annotation");
+
+ annotationNameHolder.setNextSibling(annotationName);
+ annotation.setFirstChild(comment);
+ comment.setNextSibling(annotationNameHolder);
+ annotations.setFirstChild(annotation);
+ child.setNextSibling(annotations);
+ astForTest.setFirstChild(child);
+
+ assertTrue("Annotation should contain " + astForTest,
+ AnnotationUtility.containsAnnotation(astForTest, "Annotation"));
+ }
}