@Override public boolean doIsEquals(ObjectCreationExpr first, ObjectCreationExpr second) { if(!isEqualsUseMerger(first.getScope(),second.getScope())) return false; if(!isEqualsUseMerger(first.getType(),second.getType())) return false; if(!isEqualsUseMerger(first.getTypeArgs(),second.getTypeArgs())) return false; if(!isEqualsUseMerger(first.getArgs(),second.getArgs())) return false; return true; } }
@Override public SymbolReference<ResolvedTypeDeclaration> solveType(String name) { if (wrappedNode.getScope().isPresent()) { Expression scope = wrappedNode.getScope().get(); ResolvedType scopeType = JavaParserFacade.get(typeSolver).getType(scope); if (scopeType.isReferenceType()) { ResolvedReferenceType referenceType = scopeType.asReferenceType(); for (ResolvedTypeDeclaration it : referenceType.getTypeDeclaration().internalTypes()) { if (it.getName().equals(name)) { return SymbolReference.solved(it); } } } throw new UnsolvedSymbolException("Unable to solve qualified object creation expression in the context of expression of type " + scopeType.describe()); } // find first parent node that is not an object creation expression to avoid stack overflow errors, see #1711 Node parentNode = requireParentNode(wrappedNode); while (parentNode instanceof ObjectCreationExpr) { parentNode = requireParentNode(parentNode); } return JavaParserFactory.getContext(parentNode, typeSolver).solveType(name); }
@Override public ObjectCreationExpr doMerge(ObjectCreationExpr first, ObjectCreationExpr second) { ObjectCreationExpr oce = new ObjectCreationExpr(); oce.setScope(mergeSingle(first.getScope(),second.getScope())); oce.setType(mergeSingle(first.getType(),second.getType())); oce.setTypeArgs(mergeCollectionsInOrder(first.getTypeArgs(),second.getTypeArgs())); oce.setArgs(mergeCollectionsInOrder(first.getArgs(),second.getArgs())); oce.setAnonymousClassBody(mergeCollections(first.getAnonymousClassBody(),second.getAnonymousClassBody())); return oce; }