ResolvedTypeDeclaration ancestorDeclaration = checkAncestorsForType(name, ancestor.getTypeDeclaration()); if (ancestorDeclaration != null) { return ancestorDeclaration;
public SymbolReference<ResolvedTypeDeclaration> solveType(String name) { if (this.wrappedNode.getName().getId().equals(name)) { return SymbolReference.solved(JavaParserFacade.get(typeSolver).getTypeDeclaration(wrappedNode)); } // Internal classes for (BodyDeclaration<?> member : this.wrappedNode.getMembers()) { if (member instanceof com.github.javaparser.ast.body.TypeDeclaration) { com.github.javaparser.ast.body.TypeDeclaration<?> internalType = (com.github.javaparser.ast.body.TypeDeclaration<?>) member; if (internalType.getName().getId().equals(name)) { return SymbolReference.solved(JavaParserFacade.get(typeSolver).getTypeDeclaration(internalType)); } else if (name.startsWith(String.format("%s.%s", wrappedNode.getName(), internalType.getName()))) { return JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(wrappedNode.getName().getId().length() + 1)); } else if (name.startsWith(String.format("%s.", internalType.getName()))) { return JavaParserFactory.getContext(internalType, typeSolver).solveType(name.substring(internalType.getName().getId().length() + 1)); } } } if (wrappedNode instanceof NodeWithTypeParameters) { NodeWithTypeParameters<?> nodeWithTypeParameters = (NodeWithTypeParameters<?>) wrappedNode; for (TypeParameter astTpRaw : nodeWithTypeParameters.getTypeParameters()) { TypeParameter astTp = astTpRaw; if (astTp.getName().getId().equals(name)) { return SymbolReference.solved(new JavaParserTypeParameter(astTp, typeSolver)); } } } // Look into extended classes and implemented interfaces ResolvedTypeDeclaration type = checkAncestorsForType(name, this.typeDeclaration); return ((type != null) ? SymbolReference.solved(type) : context.getParent().solveType(name)); }