@Override public ExplicitConstructorInvocationStmt doMerge(ExplicitConstructorInvocationStmt first, ExplicitConstructorInvocationStmt second) { ExplicitConstructorInvocationStmt ecis = new ExplicitConstructorInvocationStmt(); ecis.setArgs(mergeCollectionsInOrder(first.getArgs(),second.getArgs())); ecis.setTypeArgs(mergeCollectionsInOrder(first.getTypeArgs(),second.getTypeArgs())); ecis.setExpr(mergeSingle(first.getExpr(),second.getExpr())); ecis.setThis(first.isThis()); return ecis; }
@Override public boolean doIsEquals(ExplicitConstructorInvocationStmt first, ExplicitConstructorInvocationStmt second) { if(!isEqualsUseMerger(first.getExpr(),second.getExpr())) return false; if(!isEqualsUseMerger(first.getTypeArgs(),second.getTypeArgs())) return false; if(!isEqualsUseMerger(first.getArgs(),second.getArgs())) return false; if(first.isThis() != second.isThis()) return false; return true; } }
public SymbolReference<ResolvedConstructorDeclaration> solve(ExplicitConstructorInvocationStmt explicitConstructorInvocationStmt, boolean solveLambdas) { List<ResolvedType> argumentTypes = new LinkedList<>(); List<LambdaArgumentTypePlaceholder> placeholders = new LinkedList<>(); solveArguments(explicitConstructorInvocationStmt, explicitConstructorInvocationStmt.getArguments(), solveLambdas, argumentTypes, placeholders); Optional<ClassOrInterfaceDeclaration> optAncestor = explicitConstructorInvocationStmt.getAncestorOfType(ClassOrInterfaceDeclaration.class); if (!optAncestor.isPresent()) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } ClassOrInterfaceDeclaration classNode = optAncestor.get(); ResolvedTypeDeclaration typeDecl = null; if (!explicitConstructorInvocationStmt.isThis()) { ResolvedType classDecl = JavaParserFacade.get(typeSolver).convert(classNode.getExtendedTypes(0), classNode); if (classDecl.isReferenceType()) { typeDecl = classDecl.asReferenceType().getTypeDeclaration(); } } else { SymbolReference<ResolvedTypeDeclaration> sr = JavaParserFactory.getContext(classNode, typeSolver).solveType(classNode.getNameAsString(), typeSolver); if (sr.isSolved()) { typeDecl = sr.getCorrespondingDeclaration(); } } if (typeDecl == null) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } SymbolReference<ResolvedConstructorDeclaration> res = ConstructorResolutionLogic.findMostApplicable(((ResolvedClassDeclaration) typeDecl).getConstructors(), argumentTypes, typeSolver); for (LambdaArgumentTypePlaceholder placeholder : placeholders) { placeholder.setMethod(res); } return res; }
public SymbolReference<ResolvedConstructorDeclaration> solve(ExplicitConstructorInvocationStmt explicitConstructorInvocationStmt, boolean solveLambdas) { List<ResolvedType> argumentTypes = new LinkedList<>(); List<LambdaArgumentTypePlaceholder> placeholders = new LinkedList<>(); solveArguments(explicitConstructorInvocationStmt, explicitConstructorInvocationStmt.getArguments(), solveLambdas, argumentTypes, placeholders); Optional<ClassOrInterfaceDeclaration> optAncestor = explicitConstructorInvocationStmt.findAncestor(ClassOrInterfaceDeclaration.class); if (!optAncestor.isPresent()) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } ClassOrInterfaceDeclaration classNode = optAncestor.get(); ResolvedTypeDeclaration typeDecl = null; if (!explicitConstructorInvocationStmt.isThis()) { ResolvedType classDecl = JavaParserFacade.get(typeSolver).convert(classNode.getExtendedTypes(0), classNode); if (classDecl.isReferenceType()) { typeDecl = classDecl.asReferenceType().getTypeDeclaration(); } } else { SymbolReference<ResolvedTypeDeclaration> sr = JavaParserFactory.getContext(classNode, typeSolver).solveType(classNode.getNameAsString()); if (sr.isSolved()) { typeDecl = sr.getCorrespondingDeclaration(); } } if (typeDecl == null) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } SymbolReference<ResolvedConstructorDeclaration> res = ConstructorResolutionLogic.findMostApplicable(((ResolvedClassDeclaration) typeDecl).getConstructors(), argumentTypes, typeSolver); for (LambdaArgumentTypePlaceholder placeholder : placeholders) { placeholder.setMethod(res); } return res; }
return; NodeList<Expression> args = ((ExplicitConstructorInvocationStmt)(stmts.get(0))).getArguments(); args.set(0, new NameExpr("type")); args.set(1, new NameExpr("casImpl"));
public SymbolReference<ResolvedConstructorDeclaration> solve(ExplicitConstructorInvocationStmt explicitConstructorInvocationStmt, boolean solveLambdas) { List<ResolvedType> argumentTypes = new LinkedList<>(); List<LambdaArgumentTypePlaceholder> placeholders = new LinkedList<>(); solveArguments(explicitConstructorInvocationStmt, explicitConstructorInvocationStmt.getArguments(), solveLambdas, argumentTypes, placeholders); Optional<ClassOrInterfaceDeclaration> optAncestor = explicitConstructorInvocationStmt.getAncestorOfType(ClassOrInterfaceDeclaration.class); if (!optAncestor.isPresent()) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } ClassOrInterfaceDeclaration classNode = optAncestor.get(); ResolvedTypeDeclaration typeDecl = null; if (!explicitConstructorInvocationStmt.isThis()) { ResolvedType classDecl = JavaParserFacade.get(typeSolver).convert(classNode.getExtendedTypes(0), classNode); if (classDecl.isReferenceType()) { typeDecl = classDecl.asReferenceType().getTypeDeclaration(); } } else { SymbolReference<ResolvedTypeDeclaration> sr = JavaParserFactory.getContext(classNode, typeSolver).solveType(classNode.getNameAsString(), typeSolver); if (sr.isSolved()) { typeDecl = sr.getCorrespondingDeclaration(); } } if (typeDecl == null) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } SymbolReference<ResolvedConstructorDeclaration> res = ConstructorResolutionLogic.findMostApplicable(((ResolvedClassDeclaration) typeDecl).getConstructors(), argumentTypes, typeSolver); for (LambdaArgumentTypePlaceholder placeholder : placeholders) { placeholder.setMethod(res); } return res; }