protected Optional<ResolvedType> typeParamByName(String name, Context context) { return methodDeclaration.getTypeParameters().stream().filter(tp -> tp.getName().equals(name)).map(tp -> toType(tp)).findFirst(); }
protected Optional<ResolvedType> typeParamByName(String name, TypeSolver typeSolver, Context context) { return methodDeclaration.getTypeParameters().stream().filter(tp -> tp.getName().equals(name)).map(tp -> toType(tp)).findFirst(); }
protected Optional<ResolvedType> typeParamByName(String name, TypeSolver typeSolver, Context context) { return methodDeclaration.getTypeParameters().stream().filter(tp -> tp.getName().equals(name)).map(tp -> toType(tp)).findFirst(); }
private MethodUsage resolveMethodTypeParametersFromExplicitList(TypeSolver typeSolver, MethodUsage methodUsage) { if (wrappedNode.getTypeArguments().isPresent()) { final List<ResolvedType> typeArguments = new ArrayList<>(); for (com.github.javaparser.ast.type.Type ty : wrappedNode.getTypeArguments().get()) { typeArguments.add(JavaParserFacade.get(typeSolver).convertToUsage(ty)); } List<ResolvedTypeParameterDeclaration> tyParamDecls = methodUsage.getDeclaration().getTypeParameters(); if (tyParamDecls.size() == typeArguments.size()) { for (int i = 0; i < tyParamDecls.size(); i++) { methodUsage = methodUsage.replaceTypeParameter(tyParamDecls.get(i), typeArguments.get(i)); } } } return methodUsage; }
private MethodUsage resolveMethodTypeParametersFromExplicitList(TypeSolver typeSolver, MethodUsage methodUsage) { if (wrappedNode.getTypeArguments().isPresent()) { final List<ResolvedType> typeArguments = new ArrayList<>(); for (com.github.javaparser.ast.type.Type ty : wrappedNode.getTypeArguments().get()) { typeArguments.add(JavaParserFacade.get(typeSolver).convertToUsage(ty)); } List<ResolvedTypeParameterDeclaration> tyParamDecls = methodUsage.getDeclaration().getTypeParameters(); if (tyParamDecls.size() == typeArguments.size()) { for (int i = 0; i < tyParamDecls.size(); i++) { methodUsage = methodUsage.replaceTypeParameter(tyParamDecls.get(i), typeArguments.get(i)); } } } return methodUsage; }
private MethodUsage resolveMethodTypeParametersFromExplicitList(TypeSolver typeSolver, MethodUsage methodUsage) { if (wrappedNode.getTypeArguments().isPresent()) { final List<ResolvedType> typeArguments = new ArrayList<>(); for (com.github.javaparser.ast.type.Type ty : wrappedNode.getTypeArguments().get()) { typeArguments.add(JavaParserFacade.get(typeSolver).convertToUsage(ty)); } List<ResolvedTypeParameterDeclaration> tyParamDecls = methodUsage.getDeclaration().getTypeParameters(); if (tyParamDecls.size() == typeArguments.size()) { for (int i = 0; i < tyParamDecls.size(); i++) { methodUsage = methodUsage.replaceTypeParameter(tyParamDecls.get(i), typeArguments.get(i)); } } } return methodUsage; }
private static MethodUsage replaceParams(List<ResolvedType> typeParameterValues, ResolvedReferenceTypeDeclaration typeParametrizable, ResolvedMethodDeclaration methodDeclaration) { MethodUsage methodUsage = new MethodUsage(methodDeclaration); int i = 0; // Only replace if we have enough values provided if (typeParameterValues.size() == typeParametrizable.getTypeParameters().size()){ for (ResolvedTypeParameterDeclaration tp : typeParametrizable.getTypeParameters()) { methodUsage = methodUsage.replaceTypeParameter(tp, typeParameterValues.get(i)); i++; } } for (ResolvedTypeParameterDeclaration methodTypeParameter : methodDeclaration.getTypeParameters()) { methodUsage = methodUsage.replaceTypeParameter(methodTypeParameter, new ResolvedTypeVariable(methodTypeParameter)); } return methodUsage; } }
private static MethodUsage replaceParams(List<ResolvedType> typeParameterValues, ResolvedReferenceTypeDeclaration typeParametrizable, ResolvedMethodDeclaration methodDeclaration) { MethodUsage methodUsage = new MethodUsage(methodDeclaration); int i = 0; // Only replace if we have enough values provided if (typeParameterValues.size() == typeParametrizable.getTypeParameters().size()){ for (ResolvedTypeParameterDeclaration tp : typeParametrizable.getTypeParameters()) { methodUsage = methodUsage.replaceTypeParameter(tp, typeParameterValues.get(i)); i++; } } for (ResolvedTypeParameterDeclaration methodTypeParameter : methodDeclaration.getTypeParameters()) { methodUsage = methodUsage.replaceTypeParameter(methodTypeParameter, new ResolvedTypeVariable(methodTypeParameter)); } return methodUsage; } }
private static MethodUsage replaceParams(List<ResolvedType> typeParameterValues, ResolvedReferenceTypeDeclaration typeParametrizable, ResolvedMethodDeclaration methodDeclaration) { MethodUsage methodUsage = new MethodUsage(methodDeclaration); int i = 0; // Only replace if we have enough values provided if (typeParameterValues.size() == typeParametrizable.getTypeParameters().size()){ for (ResolvedTypeParameterDeclaration tp : typeParametrizable.getTypeParameters()) { methodUsage = methodUsage.replaceTypeParameter(tp, typeParameterValues.get(i)); i++; } } for (ResolvedTypeParameterDeclaration methodTypeParameter : methodDeclaration.getTypeParameters()) { methodUsage = methodUsage.replaceTypeParameter(methodTypeParameter, new ResolvedTypeVariable(methodTypeParameter)); } return methodUsage; } }
public static MethodType fromMethodUsage(MethodUsage methodUsage) { return new MethodType(methodUsage.getDeclaration().getTypeParameters(), methodUsage.getParamTypes(), methodUsage.returnType(), methodUsage.exceptionTypes()); }
public static MethodType fromMethodUsage(MethodUsage methodUsage) { return new MethodType(methodUsage.getDeclaration().getTypeParameters(), methodUsage.getParamTypes(), methodUsage.returnType(), methodUsage.exceptionTypes()); }
public static MethodType fromMethodUsage(MethodUsage methodUsage) { return new MethodType(methodUsage.getDeclaration().getTypeParameters(), methodUsage.getParamTypes(), methodUsage.returnType(), methodUsage.exceptionTypes()); }
List<ResolvedTypeParameterDeclaration> Ps = methodDeclaration.getTypeParameters(); List<InferenceVariable> alphas = InferenceVariable.instantiate(Ps); Substitution theta = Substitution.empty();
List<ResolvedTypeParameterDeclaration> Ps = methodDeclaration.getTypeParameters(); List<InferenceVariable> alphas = InferenceVariable.instantiate(Ps); Substitution theta = Substitution.empty();
List<ResolvedTypeParameterDeclaration> Ps = methodDeclaration.getTypeParameters(); List<InferenceVariable> alphas = InferenceVariable.instantiate(Ps); Substitution theta = Substitution.empty();
actualParamTypes.get(actualParamTypes.size() - 1); if (!expectedType.isAssignableBy(actualType)) { for (ResolvedTypeParameterDeclaration tp : methodUsage.getDeclaration().getTypeParameters()) { expectedType = MethodResolutionLogic.replaceTypeParam(expectedType, tp, typeSolver);
actualParamTypes.get(actualParamTypes.size() - 1); if (!expectedType.isAssignableBy(actualType)) { for (ResolvedTypeParameterDeclaration tp : methodUsage.getDeclaration().getTypeParameters()) { expectedType = MethodResolutionLogic.replaceTypeParam(expectedType, tp, typeSolver);
actualParamTypes.get(actualParamTypes.size() - 1); if (!expectedType.isAssignableBy(actualType)) { for (ResolvedTypeParameterDeclaration tp : methodUsage.getDeclaration().getTypeParameters()) { expectedType = MethodResolutionLogic.replaceTypeParam(expectedType, tp, typeSolver);
ResolvedType actualType = argumentsTypes.get(pos); if (!expectedType.isAssignableBy(actualType)) { for (ResolvedTypeParameterDeclaration tp : method.getTypeParameters()) { expectedType = replaceTypeParam(expectedType, tp, typeSolver); List<ResolvedTypeParameterDeclaration> typeParameters = method.getTypeParameters(); typeParameters.addAll(method.declaringType().getTypeParameters()); for (ResolvedTypeParameterDeclaration tp : typeParameters) {
@Test public void declaredOnMethodPositiveCase() throws ParseException { CompilationUnit cu = parseSample("MethodTypeParameter"); TypeSolver typeSolver = new ReflectionTypeSolver(); JavaParserFacade javaParserFacade = JavaParserFacade.get(typeSolver); ClassOrInterfaceDeclaration classDecl = Navigator.demandClass(cu, "Foo"); MethodDeclaration methodDecl = Navigator.demandMethod(classDecl, "usage"); MethodCallExpr callToFoo = (MethodCallExpr) Navigator.findReturnStmt(methodDecl).getExpression().get(); ResolvedMethodDeclaration methodDeclaration = javaParserFacade.solve(callToFoo).getCorrespondingDeclaration(); for (ResolvedTypeParameterDeclaration tp : methodDeclaration.getTypeParameters()) { assertTrue(tp instanceof JavaParserTypeParameter); assertEquals("C", tp.getName()); assertEquals(true, tp.declaredOnMethod()); assertEquals(false, tp.declaredOnType()); } }