From 9b4b50560def31e971f31e460574bca7bd092268 Mon Sep 17 00:00:00 2001 From: Xavier Le Vourch Date: Tue, 27 Jan 2009 23:43:03 +0000 Subject: [PATCH] Recent change in UseSingleton introduced a false + for methods with annotations git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/branches/pmd/4.2.x@6802 51baf565-9d33-0410-a72c-fc3788e3496d --- .../pmd/rules/design/xml/UseSingleton.xml | 14 ++++++++++++++ .../sourceforge/pmd/rules/design/UseSingleton.java | 10 +++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/pmd/regress/test/net/sourceforge/pmd/rules/design/xml/UseSingleton.xml b/pmd/regress/test/net/sourceforge/pmd/rules/design/xml/UseSingleton.xml index b04c300e1e..a962e607ae 100644 --- a/pmd/regress/test/net/sourceforge/pmd/rules/design/xml/UseSingleton.xml +++ b/pmd/regress/test/net/sourceforge/pmd/rules/design/xml/UseSingleton.xml @@ -163,6 +163,20 @@ public enum EnumTest { public static void main(String[] args) { System.out.println(EnumTest.A); } +} + ]]> + + + + 0 + diff --git a/pmd/src/net/sourceforge/pmd/rules/design/UseSingleton.java b/pmd/src/net/sourceforge/pmd/rules/design/UseSingleton.java index 1f306d8bb2..8864681906 100644 --- a/pmd/src/net/sourceforge/pmd/rules/design/UseSingleton.java +++ b/pmd/src/net/sourceforge/pmd/rules/design/UseSingleton.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.rules.design; import net.sourceforge.pmd.AbstractRule; +import net.sourceforge.pmd.ast.ASTAnnotation; import net.sourceforge.pmd.ast.ASTClassOrInterfaceBody; import net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration; import net.sourceforge.pmd.ast.ASTClassOrInterfaceType; @@ -26,11 +27,14 @@ public class UseSingleton extends AbstractRule { int methodCount = 0; boolean isOK = false; while (i > 0) { - Node n = decl.jjtGetChild(--i); - if (n.jjtGetNumChildren() != 1) { + Node p = decl.jjtGetChild(--i); + if (p.jjtGetNumChildren() == 0) { continue; } - n = n.jjtGetChild(0); + Node n = p.jjtGetChild(0); + if (n instanceof ASTAnnotation) { + n = p.jjtGetChild(1); + } if (n instanceof ASTFieldDeclaration) { if (!((ASTFieldDeclaration) n).isStatic()) { isOK = true;