From 307eacd20aecd7cabda70e3df27f78b5bd9d91a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sat, 14 Nov 2020 15:34:06 +0100 Subject: [PATCH] Fix errors --- .../typedefinition/JavaTypeDefinitionSimple.java | 15 ++++++++------- .../pmd/typeresolution/ClassTypeResolverTest.java | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/typeresolution/typedefinition/JavaTypeDefinitionSimple.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/typeresolution/typedefinition/JavaTypeDefinitionSimple.java index 4d5c2e2f61..3c24a2cad9 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/typeresolution/typedefinition/JavaTypeDefinitionSimple.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/typeresolution/typedefinition/JavaTypeDefinitionSimple.java @@ -31,7 +31,7 @@ import java.util.logging.Logger; private final Class clazz; private JavaTypeDefinition[] genericArgs; // cached because calling clazz.getTypeParameters().length create a new array every time - private int typeParameterCount; + private int typeParameterCount = -1; private final int typeArgumentCount; private final JavaTypeDefinition enclosingClass; @@ -294,15 +294,12 @@ import java.util.logging.Logger; .append(", genericArgs=["); // Forcefully resolve all generic types - for (int i = 0; i < genericArgs.length; i++) { - getGenericType(i); - } - - for (final JavaTypeDefinition jtd : genericArgs) { + for (int i = 0; i < getTypeParameterCount(); i++) { + JavaTypeDefinition jtd = getGenericType(i); sb.append(jtd.shallowString()).append(", "); } - if (genericArgs.length != 0) { + if (getTypeParameterCount() != 0) { sb.replace(sb.length() - 3, sb.length() - 1, ""); // remove last comma } @@ -341,6 +338,10 @@ import java.util.logging.Logger; return false; } + if (isRawType() || otherTypeDef.isRawType()) { + return this.isRawType() == otherTypeDef.isRawType(); + } + for (int i = 0; i < getTypeParameterCount(); ++i) { // Note: we assume that cycles can only exist because of raw types if (!getGenericType(i).equals(otherTypeDef.getGenericType(i))) { diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java index f2e9661ed5..f5a7add61a 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/ClassTypeResolverTest.java @@ -1703,8 +1703,8 @@ public class ClassTypeResolverTest { a = forClass(JavaTypeDefinitionEquals.class); b = forClass(JavaTypeDefinitionEquals.class, forClass(List.class, a)); - assertEquals(a, b); - assertEquals(b, a); + assertNotEquals(a, b); + assertNotEquals(b, a); } @Test