aboutsummaryrefslogtreecommitdiff
path: root/javaparser-symbol-solver-core
diff options
context:
space:
mode:
authordhardtke <accounts@pcprofil.de>2018-02-02 04:21:11 +0100
committerdhardtke <accounts@pcprofil.de>2018-02-02 04:21:11 +0100
commitfc0a1b721f63bd05ff54cfbb68488b32a6023ae2 (patch)
treebf15989763974ab4fbfed325640c3befa1779a34 /javaparser-symbol-solver-core
parent45f5c97e9ecfab67bc548ebad15ac3c79d131c06 (diff)
downloadjavaparser-fc0a1b721f63bd05ff54cfbb68488b32a6023ae2.tar.gz
fix(symbol solver): Fix infinite recursion when solving java.lang.Object
Diffstat (limited to 'javaparser-symbol-solver-core')
-rw-r--r--javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserClassDeclaration.java21
1 files changed, 13 insertions, 8 deletions
diff --git a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserClassDeclaration.java b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserClassDeclaration.java
index 7a6e198da..9b1979aad 100644
--- a/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserClassDeclaration.java
+++ b/javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/declarations/JavaParserClassDeclaration.java
@@ -290,16 +290,21 @@ public class JavaParserClassDeclaration extends AbstractClassDeclaration {
@Override
public List<ResolvedReferenceType> getAncestors() {
List<ResolvedReferenceType> ancestors = new ArrayList<>();
- ResolvedReferenceType superclass = getSuperClass();
- if (superclass != null) {
- ancestors.add(superclass);
- }
- if (wrappedNode.getImplementedTypes() != null) {
- for (ClassOrInterfaceType implemented : wrappedNode.getImplementedTypes()) {
- ResolvedReferenceType ancestor = toReferenceType(implemented);
- ancestors.add(ancestor);
+
+ // We want to avoid infinite recursion in case of Object having Object as ancestor
+ if (!(Object.class.getCanonicalName().equals(getQualifiedName()))) {
+ ResolvedReferenceType superclass = getSuperClass();
+ if (superclass != null) {
+ ancestors.add(superclass);
+ }
+ if (wrappedNode.getImplementedTypes() != null) {
+ for (ClassOrInterfaceType implemented : wrappedNode.getImplementedTypes()) {
+ ResolvedReferenceType ancestor = toReferenceType(implemented);
+ ancestors.add(ancestor);
+ }
}
}
+
return ancestors;
}