private boolean isImplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().anyMatch(p -> p.getType() instanceof UnknownType); }
@Override public LambdaExpr doMerge(LambdaExpr first, LambdaExpr second) { LambdaExpr le = new LambdaExpr(); le.setBody(mergeSingle(first.getBody(),second.getBody())); le.setParameters(mergeCollectionsInOrder(first.getParameters(),second.getParameters())); le.setParametersEnclosed(first.isParametersEnclosed()); return le; }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; LambdaThrowsCompatibleWithType that = (LambdaThrowsCompatibleWithType) o; if (!lambdaExpression.equals(that.lambdaExpression)) return false; return T.equals(that.T); }
@Override public List<Parameter> parametersExposedToChild(Node child) { if (child == wrappedNode.getBody()) { return wrappedNode.getParameters(); } return Collections.emptyList(); }
@Override public boolean doIsEquals(LambdaExpr first, LambdaExpr second) { if(first.isParametersEnclosed() != second.isParametersEnclosed()) return false; if(!isEqualsUseMerger(first.getParameters(),second.getParameters())) return false; if(!isEqualsUseMerger(first.getBody(),second.getBody())) return false; return true; }
if (targetFunctionType.getFormalArgumentTypes().size() != lambdaExpr.getParameters().size()) { return ReductionResult.falseResult(); if (!targetFunctionType.getReturnType().isVoid() && lambdaExpr.getBody() instanceof BlockStmt && !isValueCompatibleBlock(lambdaExpr.getBody())) { return ReductionResult.falseResult(); boolean hasExplicitlyDeclaredTypes = lambdaExpr.getParameters().stream().anyMatch(p -> !(p.getType() instanceof UnknownType)); if (hasExplicitlyDeclaredTypes) { throw new UnsupportedOperationException(); if (lambdaExpr.getBody() instanceof BlockStmt) { List<Expression> resultExpressions = ExpressionHelper.getResultExpressions((BlockStmt)lambdaExpr.getBody()); for (Expression e : resultExpressions) { if (!ExpressionHelper.isCompatibleInAssignmentContext(e, R, typeSolver)) { Expression e = ((ExpressionStmt)lambdaExpr.getBody()).getExpression(); if (!ExpressionHelper.isCompatibleInAssignmentContext(e, R, typeSolver)) { return ReductionResult.falseResult(); if (lambdaExpr.getBody() instanceof BlockStmt) { getAllReturnExpressions((BlockStmt)lambdaExpr.getBody()).forEach(e -> constraints.add(new ExpressionCompatibleWithType(typeSolver, e, R))); } else { for (int i=0;i<lambdaExpr.getParameters().size();i++) { ResolvedType paramType = targetFunctionType.getFormalArgumentTypes().get(i); TypeInferenceCache.record(typeSolver, lambdaExpr, lambdaExpr.getParameter(i).getNameAsString(), paramType); Expression e = ((ExpressionStmt)lambdaExpr.getBody()).getExpression();
@Override public Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { for (Parameter parameter : wrappedNode.getParameters()) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(parameter, typeSolver); int index = 0; for (lambdaParamIndex = 0; lambdaParamIndex < wrappedNode.getParameters().size(); lambdaParamIndex++){ if (wrappedNode.getParameter(lambdaParamIndex).getName().getIdentifier().equals(name)){ found = true; break;
public RouteResponse accept(final Node node, final Context ctx, final Type retType, final String doc, final Map<Integer, String> codes) { this.type = retType; boolean lambda = node instanceof LambdaExpr; if (lambda) { ((LambdaExpr) node).getParameters() .forEach(p -> args.add(p.getId().toStringWithoutComments())); } if (this.type == null) { node.accept(this, ctx); if (type == null && lambda) { LambdaExpr expr = (LambdaExpr) node; if (expr.getChildrenNodes().size() == 1) { type = expr.getChildrenNodes().get(0).accept(new TypeCollector(), ctx); } } } return new RouteResponseImpl(this.type == null ? Object.class : this.type, doc, codes); }
@Override public int hashCode() { int result = lambdaExpression.hashCode(); result = 31 * result + T.hashCode(); return result; }
/** * For some reasons LambdaExprs are duplicate and the equals method is not implemented correctly. * * @param map * @return */ private Optional<ResolvedType> find(Map<Node, ResolvedType> map, LambdaExpr lambdaExpr) { for (Node key : map.keySet()) { if (key instanceof LambdaExpr) { LambdaExpr keyLambdaExpr = (LambdaExpr) key; if (keyLambdaExpr.toString().equals(lambdaExpr.toString()) && getParentNode(keyLambdaExpr) == getParentNode(lambdaExpr)) { return Optional.of(map.get(keyLambdaExpr)); } } } return Optional.empty(); }
if (targetFunctionType.getFormalArgumentTypes().size() != lambdaExpr.getParameters().size()) { return ReductionResult.falseResult(); if (!targetFunctionType.getReturnType().isVoid() && lambdaExpr.getBody() instanceof BlockStmt && !isValueCompatibleBlock(lambdaExpr.getBody())) { return ReductionResult.falseResult(); boolean hasExplicitlyDeclaredTypes = lambdaExpr.getParameters().stream().anyMatch(p -> !(p.getType() instanceof UnknownType)); if (hasExplicitlyDeclaredTypes) { throw new UnsupportedOperationException(); if (lambdaExpr.getBody() instanceof BlockStmt) { List<Expression> resultExpressions = ExpressionHelper.getResultExpressions((BlockStmt)lambdaExpr.getBody()); for (Expression e : resultExpressions) { if (!ExpressionHelper.isCompatibleInAssignmentContext(e, R, typeSolver)) { Expression e = ((ExpressionStmt)lambdaExpr.getBody()).getExpression(); if (!ExpressionHelper.isCompatibleInAssignmentContext(e, R, typeSolver)) { return ReductionResult.falseResult(); if (lambdaExpr.getBody() instanceof BlockStmt) { getAllReturnExpressions((BlockStmt)lambdaExpr.getBody()).stream().forEach(e -> constraints.add(new ExpressionCompatibleWithType(typeSolver, e, R))); } else { for (int i=0;i<lambdaExpr.getParameters().size();i++) { ResolvedType paramType = targetFunctionType.getFormalArgumentTypes().get(i); TypeInferenceCache.record(typeSolver, lambdaExpr, lambdaExpr.getParameter(i).getNameAsString(), paramType); Expression e = ((ExpressionStmt)lambdaExpr.getBody()).getExpression();
@Override public Optional<Value> solveSymbolAsValue(String name, TypeSolver typeSolver) { for (Parameter parameter : wrappedNode.getParameters()) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(parameter, typeSolver); int index = 0; for (lambdaParamIndex = 0; lambdaParamIndex < wrappedNode.getParameters().size(); lambdaParamIndex++){ if (wrappedNode.getParameter(lambdaParamIndex).getName().getIdentifier().equals(name)){ found = true; break;
public void visit(final LambdaExpr n, final RoutingDefineContext arg) { if (arg.isInRoutingDefine()) { arg.setRoutingParameter(n.getParameters().get(0)); n.getBody().accept(this, arg); } }
if (lambdaExpr.getBody() instanceof ExpressionStmt) { actualType = facade.getType(((ExpressionStmt)lambdaExpr.getBody()).getExpression()); } else if (lambdaExpr.getBody() instanceof BlockStmt) { BlockStmt blockStmt = (BlockStmt) lambdaExpr.getBody(); NodeList<Statement> statements = blockStmt.getStatements();
@Override public int hashCode() { int result = lambdaExpression.hashCode(); result = 31 * result + T.hashCode(); return result; }
/** * For some reasons LambdaExprs are duplicate and the equals method is not implemented correctly. * * @param map * @return */ private Optional<ResolvedType> find(Map<Node, ResolvedType> map, LambdaExpr lambdaExpr) { for (Node key : map.keySet()) { if (key instanceof LambdaExpr) { LambdaExpr keyLambdaExpr = (LambdaExpr) key; if (keyLambdaExpr.toString().equals(lambdaExpr.toString()) && getParentNode(keyLambdaExpr) == getParentNode(lambdaExpr)) { return Optional.of(map.get(keyLambdaExpr)); } } } return Optional.empty(); }
public static boolean isExplicitlyTyped(LambdaExpr lambdaExpr) { return lambdaExpr.getParameters().stream().allMatch(p -> !(p.getType() instanceof UnknownType)); }
if (targetFunctionType.getFormalArgumentTypes().size() != lambdaExpr.getParameters().size()) { return ReductionResult.falseResult(); if (!targetFunctionType.getReturnType().isVoid() && lambdaExpr.getBody() instanceof BlockStmt && !isValueCompatibleBlock(lambdaExpr.getBody())) { return ReductionResult.falseResult(); boolean hasExplicitlyDeclaredTypes = lambdaExpr.getParameters().stream().anyMatch(p -> !(p.getType() instanceof UnknownType)); if (hasExplicitlyDeclaredTypes) { throw new UnsupportedOperationException(); if (lambdaExpr.getBody() instanceof BlockStmt) { List<Expression> resultExpressions = ExpressionHelper.getResultExpressions((BlockStmt)lambdaExpr.getBody()); for (Expression e : resultExpressions) { if (!ExpressionHelper.isCompatibleInAssignmentContext(e, R, typeSolver)) { Expression e = ((ExpressionStmt)lambdaExpr.getBody()).getExpression(); if (!ExpressionHelper.isCompatibleInAssignmentContext(e, R, typeSolver)) { return ReductionResult.falseResult(); if (lambdaExpr.getBody() instanceof BlockStmt) { getAllReturnExpressions((BlockStmt)lambdaExpr.getBody()).stream().forEach(e -> constraints.add(new ExpressionCompatibleWithType(typeSolver, e, R))); } else { for (int i=0;i<lambdaExpr.getParameters().size();i++) { ResolvedType paramType = targetFunctionType.getFormalArgumentTypes().get(i); TypeInferenceCache.record(typeSolver, lambdaExpr, lambdaExpr.getParameter(i).getNameAsString(), paramType); Expression e = ((ExpressionStmt)lambdaExpr.getBody()).getExpression();
@Override public Optional<Value> solveSymbolAsValue(String name) { for (Parameter parameter : wrappedNode.getParameters()) { SymbolDeclarator sb = JavaParserFactory.getSymbolDeclarator(parameter, typeSolver); int index = 0; for (lambdaParamIndex = 0; lambdaParamIndex < wrappedNode.getParameters().size(); lambdaParamIndex++){ if (wrappedNode.getParameter(lambdaParamIndex).getName().getIdentifier().equals(name)){ found = true; break;