merged from trunk: Fixed ClassCastException on generic method in BeanMembersShouldSerialize

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/branches/pmd/4.2.x@6466 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Xavier Le Vourch 2008-09-10 18:34:41 +00:00
parent 037cf154f7
commit c07f274b4e
3 changed files with 17 additions and 2 deletions

View File

@ -2,6 +2,7 @@
Fixed bug 1481051 - false + UnusedNullCheckInEquals (and other false positives too)
Fixed bug 1943204 - Ant task: <ruleset> path should be relative to Ant basedir
Fixed ClassCastException on generic method in BeanMembersShouldSerialize
August 31, 2008 - 4.2.3:

View File

@ -158,4 +158,17 @@ public class Foo {
}
]]></code>
</test-code>
</test-data>
<test-code>
<description><![CDATA[
ClassCastException on generic method
]]></description>
<expected-problems>0</expected-problems>
<code><![CDATA[
public abstract class List<A> implements Iterable<A> {
public static <A> F<List<A>, Boolean> isEmpty() {
return null;
}
}
]]></code>
</test-code>
</test-data>

View File

@ -12,6 +12,7 @@ import net.sourceforge.pmd.AbstractRule;
import net.sourceforge.pmd.PropertyDescriptor;
import net.sourceforge.pmd.ast.ASTClassOrInterfaceDeclaration;
import net.sourceforge.pmd.ast.ASTCompilationUnit;
import net.sourceforge.pmd.ast.ASTMethodDeclaration;
import net.sourceforge.pmd.ast.ASTMethodDeclarator;
import net.sourceforge.pmd.ast.ASTPrimitiveType;
import net.sourceforge.pmd.ast.ASTResultType;
@ -97,7 +98,7 @@ public class BeanMembersShouldSerializeRule extends AbstractRule {
return true;
}
if (methodName.startsWith("is")) {
ASTResultType ret = (ASTResultType) meth.jjtGetParent().jjtGetChild(0);
ASTResultType ret = ((ASTMethodDeclaration) meth.jjtGetParent()).getResultType();
List primitives = ret.findChildrenOfType(ASTPrimitiveType.class);
if (!primitives.isEmpty() && ((ASTPrimitiveType) primitives.get(0)).isBoolean()) {
return true;