Implemented logic based on JLS
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserTypeVariableDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserTypeVariableDeclaration.java
index fc78ed1..0c878b8 100644
--- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserTypeVariableDeclaration.java
+++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserTypeVariableDeclaration.java
@@ -23,16 +23,27 @@
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.type.TypeParameter;
-import com.github.javaparser.resolution.declarations.*;
+import com.github.javaparser.resolution.declarations.AssociableToAST;
+import com.github.javaparser.resolution.declarations.ResolvedConstructorDeclaration;
+import com.github.javaparser.resolution.declarations.ResolvedFieldDeclaration;
+import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration;
+import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
+import com.github.javaparser.resolution.declarations.ResolvedTypeParameterDeclaration;
import com.github.javaparser.resolution.types.ResolvedReferenceType;
import com.github.javaparser.resolution.types.ResolvedType;
import com.github.javaparser.symbolsolver.core.resolution.Context;
+import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade;
import com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration;
import com.github.javaparser.symbolsolver.model.resolution.SymbolReference;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
import com.github.javaparser.symbolsolver.model.typesystem.ReferenceTypeImpl;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
* @author Federico Tomassetti
@@ -117,7 +128,19 @@
@Override
public List<ResolvedReferenceType> getAncestors(boolean acceptIncompleteList) {
- return Collections.emptyList();
+ if (wrappedNode.getTypeBound().isEmpty()) {
+ // Every type variable declared as a type parameter has a bound.
+ // If no bound is declared for a type variable, Object is assumed.
+ // https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.4
+ return Collections.singletonList(
+ JavaParserFacade.get(typeSolver).classToResolvedType(Object.class).asReferenceType()
+ );
+ } else {
+ return wrappedNode.getTypeBound().stream()
+ .map(JavaParserFacade.get(typeSolver)::convertToUsage)
+ .map(ResolvedType::asReferenceType)
+ .collect(Collectors.toList());
+ }
}
@Override