diff options
author | dhardtke <accounts@pcprofil.de> | 2018-02-02 04:21:11 +0100 |
---|---|---|
committer | dhardtke <accounts@pcprofil.de> | 2018-02-02 04:21:11 +0100 |
commit | fc0a1b721f63bd05ff54cfbb68488b32a6023ae2 (patch) | |
tree | bf15989763974ab4fbfed325640c3befa1779a34 /javaparser-symbol-solver-core | |
parent | 45f5c97e9ecfab67bc548ebad15ac3c79d131c06 (diff) | |
download | javaparser-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.java | 21 |
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; } |