From e84866aa8dc5b805d80722f07383edf897d158d8 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 6 Oct 2017 20:09:26 +0200 Subject: [PATCH] [java] typeresolution: don't throw if the type variables couldn't be resolved --- .../typedefinition/JavaTypeDefinitionSimple.java | 9 ++++++++- .../pmd/typeresolution/ClassTypeResolverTest.java | 3 +++ .../pmd/typeresolution/testdata/MethodFirstPhase.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) 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 6192eea46b..2e29887102 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 @@ -21,6 +21,8 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; /* default */ class JavaTypeDefinitionSimple extends JavaTypeDefinition { @@ -32,6 +34,8 @@ import java.util.Set; private final boolean isRawType; private final JavaTypeDefinition enclosingClass; + private static final Logger log = Logger.getLogger(JavaTypeDefinitionSimple.class.getName()); + protected JavaTypeDefinitionSimple(Class clazz, JavaTypeDefinition... boundGenerics) { super(EXACT); this.clazz = clazz; @@ -112,7 +116,10 @@ import java.util.Set; builder.append(clazz.getSimpleName()); } - throw new IllegalArgumentException(builder.toString()); + log.log(Level.FINE, builder.toString()); + // TODO: throw eventually + //throw new IllegalArgumentException(builder.toString()); + return null; } @Override 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 a73cb47c2b..8cf55f6788 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 @@ -1341,6 +1341,9 @@ public class ClassTypeResolverTest { // Set set = new HashSet<>(); assertEquals(HashSet.class, expressions.get(index++).getType()); + // List myList = new ArrayList<>(); + assertEquals(ArrayList.class, expressions.get(index++).getType()); + // Make sure we got them all assertEquals("All expressions not tested", index, expressions.size()); } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/testdata/MethodFirstPhase.java b/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/testdata/MethodFirstPhase.java index a332f8a779..98f5ec3ba2 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/testdata/MethodFirstPhase.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/typeresolution/testdata/MethodFirstPhase.java @@ -4,8 +4,11 @@ package net.sourceforge.pmd.typeresolution.testdata; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; public class MethodFirstPhase { @@ -18,6 +21,9 @@ public class MethodFirstPhase { Set set = new HashSet<>(); set.addAll(Arrays.asList("a", "b")); // TODO: return type of method call Arrays.asList is missing + + List myList = new ArrayList<>(); + Collections.sort(myList); // TODO: generic type variables on methods } String vararg(Number... a) {