private static void processSpecialNodeTypes(ObjectCreationExpr node) { Type type = node.getType(); if (isRefType(type, "LinkedQueueNode")) { node.setType(simpleParametricType("LinkedQueueAtomicNode", "E")); } else if (isRefArray(type, "E")) { node.setType(atomicRefArrayType((ArrayType) type)); } }
@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 ResolvedType visit(ObjectCreationExpr node, Boolean solveLambdas) { ResolvedType type = facade.convertToUsage(node.getType(), node); return type; }
@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; }
private boolean hasModule(List<Expression> moduleList, String packageName) { for (Expression moduleExpr : moduleList) { if (moduleExpr instanceof ObjectCreationExpr) { ObjectCreationExpr objectCreationExpr = (ObjectCreationExpr) moduleExpr; if (packageName.equals(objectCreationExpr.getType().toString())) { return true; } } } return false; }
@Override public ResolvedType visit(ObjectCreationExpr node, Boolean solveLambdas) { ResolvedType type = facade.convertToUsage(node.getType(), node); return type; }
private boolean hasModule(List<Expression> moduleList, String packageName) { for (Expression moduleExpr : moduleList) { if (moduleExpr instanceof ObjectCreationExpr) { ObjectCreationExpr objectCreationExpr = (ObjectCreationExpr) moduleExpr; if (packageName.equals(objectCreationExpr.getType().toString())) { return true; } } } return false; }
@Override public ResolvedType visit(ObjectCreationExpr node, Boolean solveLambdas) { return facade.convertToUsage(node.getType(), node); }
@Override public Node visit(final ObjectCreationExpr expr, final Context ctx) { /** * Inline like: * * Jooby app = new Jooby() {{ * ... * }}; */ ClassOrInterfaceType type = expr.getType(); if (APP.contains(type.getName())) { return expr; } return null; }
private Type importApp(final MethodCallExpr n, final Context ctx) { Function<Expression, Type> type = expr -> { if (expr instanceof ObjectCreationExpr) { ClassOrInterfaceType t = ((ObjectCreationExpr) expr).getType(); Optional<java.lang.reflect.Type> resolved = ctx.resolveType(n, t.toStringWithoutComments()); if (resolved.isPresent()) { Type c = resolved.get(); if (isJooby(c)) { return c; } } } return null; }; if ("use".equals(n.getName())) { List<Expression> args = n.getArgs(); if (args.size() == 2) { return type.apply(args.get(1)); } if (args.size() == 1) { return type.apply(args.get(0)); } } return null; }
public JavaParserAnonymousClassDeclaration(ObjectCreationExpr wrappedNode, TypeSolver typeSolver) { this.typeSolver = typeSolver; this.wrappedNode = wrappedNode; superTypeDeclaration = JavaParserFactory.getContext(wrappedNode.getParentNode().get(), typeSolver) .solveType(wrappedNode.getType().getName().getId(), typeSolver) .getCorrespondingDeclaration(); }
public JavaParserAnonymousClassDeclaration(ObjectCreationExpr wrappedNode, TypeSolver typeSolver) { this.typeSolver = typeSolver; this.wrappedNode = wrappedNode; superTypeDeclaration = JavaParserFactory.getContext(wrappedNode.getParentNode().get(), typeSolver) .solveType(wrappedNode.getType().getName().getId()) .getCorrespondingDeclaration(); }
public JavaParserAnonymousClassDeclaration(ObjectCreationExpr wrappedNode, TypeSolver typeSolver) { this.typeSolver = typeSolver; this.wrappedNode = wrappedNode; superTypeDeclaration = JavaParserFactory.getContext(wrappedNode.getParentNode().get(), typeSolver) .solveType(wrappedNode.getType().getName().getId(), typeSolver) .getCorrespondingDeclaration(); }
else if ( expr instanceof ObjectCreationExpr ) return new ResultType( typeDiscoverer.classForName( ( ( ObjectCreationExpr ) expr ).getType().getName() ), false ); else if ( expr instanceof ArrayCreationExpr ) return new ResultType( Array.class, false );
/** * Given a constructor call find out to which constructor declaration it corresponds. */ public SymbolReference<ResolvedConstructorDeclaration> solve(ObjectCreationExpr objectCreationExpr, boolean solveLambdas) { List<ResolvedType> argumentTypes = new LinkedList<>(); List<LambdaArgumentTypePlaceholder> placeholders = new LinkedList<>(); solveArguments(objectCreationExpr, objectCreationExpr.getArguments(), solveLambdas, argumentTypes, placeholders); ResolvedType classDecl = JavaParserFacade.get(typeSolver).convert(objectCreationExpr.getType(), objectCreationExpr); if (!classDecl.isReferenceType()) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } SymbolReference<ResolvedConstructorDeclaration> res = ConstructorResolutionLogic.findMostApplicable(classDecl.asReferenceType().getTypeDeclaration().getConstructors(), argumentTypes, typeSolver); for (LambdaArgumentTypePlaceholder placeholder : placeholders) { placeholder.setMethod(res); } return res; }
/** * Given a constructor call find out to which constructor declaration it corresponds. */ public SymbolReference<ResolvedConstructorDeclaration> solve(ObjectCreationExpr objectCreationExpr, boolean solveLambdas) { List<ResolvedType> argumentTypes = new LinkedList<>(); List<LambdaArgumentTypePlaceholder> placeholders = new LinkedList<>(); solveArguments(objectCreationExpr, objectCreationExpr.getArguments(), solveLambdas, argumentTypes, placeholders); ResolvedType classDecl = JavaParserFacade.get(typeSolver).convert(objectCreationExpr.getType(), objectCreationExpr); if (!classDecl.isReferenceType()) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } SymbolReference<ResolvedConstructorDeclaration> res = ConstructorResolutionLogic.findMostApplicable(((ResolvedClassDeclaration) classDecl.asReferenceType().getTypeDeclaration()).getConstructors(), argumentTypes, typeSolver); for (LambdaArgumentTypePlaceholder placeholder : placeholders) { placeholder.setMethod(res); } return res; }
/** * Given a constructor call find out to which constructor declaration it corresponds. */ public SymbolReference<ResolvedConstructorDeclaration> solve(ObjectCreationExpr objectCreationExpr, boolean solveLambdas) { List<ResolvedType> argumentTypes = new LinkedList<>(); List<LambdaArgumentTypePlaceholder> placeholders = new LinkedList<>(); solveArguments(objectCreationExpr, objectCreationExpr.getArguments(), solveLambdas, argumentTypes, placeholders); ResolvedType classDecl = JavaParserFacade.get(typeSolver).convert(objectCreationExpr.getType(), objectCreationExpr); if (!classDecl.isReferenceType()) { return SymbolReference.unsolved(ResolvedConstructorDeclaration.class); } SymbolReference<ResolvedConstructorDeclaration> res = ConstructorResolutionLogic.findMostApplicable(((ResolvedClassDeclaration) classDecl.asReferenceType().getTypeDeclaration()).getConstructors(), argumentTypes, typeSolver); for (LambdaArgumentTypePlaceholder placeholder : placeholders) { placeholder.setMethod(res); } return res; }
if (parentNode instanceof ObjectCreationExpr && node == ((ObjectCreationExpr) parentNode).getType()) { return getContext(getParentNode(parentNode), typeSolver);
if (parentNode instanceof ObjectCreationExpr && node == ((ObjectCreationExpr) parentNode).getType()) { return getContext(getParentNode(parentNode), typeSolver);
@Test public void issue235() throws ParseException { CompilationUnit cu = parseSample("Issue235"); ClassOrInterfaceDeclaration cls = Navigator.demandClassOrInterface(cu, "Foo"); TypeSolver typeSolver = new ReflectionTypeSolver(); JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver); MethodDeclaration m = Navigator.demandMethod(cls, this.method); ExpressionStmt stmt = (ExpressionStmt) m.getBody().get().getStatements().get(0); ObjectCreationExpr expression = (ObjectCreationExpr) stmt.getExpression(); Assert.assertNotNull(javaParserFacade.convertToUsage(expression.getType())); } }