winningCandidate = other; } else { if (winningCandidate.declaringType().getQualifiedName().equals(other.declaringType().getQualifiedName())) { possibleAmbiguity = true; } else {
winningCandidate = other; } else { if (winningCandidate.declaringType().getQualifiedName().equals(other.declaringType().getQualifiedName())) { possibleAmbiguity = true; } else {
winningCandidate = other; } else { if (winningCandidate.declaringType().getQualifiedName().equals(other.declaringType().getQualifiedName())) { possibleAmbiguity = true; } else {
ResolvedType functionalInterfaceType = ReferenceTypeImpl.undeterminedParameters(functionalMethod.get().getDeclaration().declaringType(), typeSolver);
ResolvedType functionalInterfaceType = ReferenceTypeImpl.undeterminedParameters(functionalMethod.get().getDeclaration().declaringType(), typeSolver);
ResolvedType functionalInterfaceType = ReferenceTypeImpl.undeterminedParameters(functionalMethod.get().getDeclaration().declaringType(), typeSolver);
@Test public void declaredOnMethodNegativeCase() throws ParseException { CompilationUnit cu = parseSample("ClassTypeParameter"); 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(); ResolvedReferenceTypeDeclaration typeDeclaration = methodDeclaration.declaringType(); assertEquals(2, typeDeclaration.getTypeParameters().size()); assertTrue(typeDeclaration.getTypeParameters().get(0) instanceof JavaParserTypeParameter); assertEquals("A", typeDeclaration.getTypeParameters().get(0).getName()); assertEquals(false, typeDeclaration.getTypeParameters().get(0).declaredOnMethod()); assertEquals(true, typeDeclaration.getTypeParameters().get(0).declaredOnType()); assertTrue(typeDeclaration.getTypeParameters().get(1) instanceof JavaParserTypeParameter); assertEquals("B", typeDeclaration.getTypeParameters().get(1).getName()); assertEquals(false, typeDeclaration.getTypeParameters().get(1).declaredOnMethod()); assertEquals(true, typeDeclaration.getTypeParameters().get(1).declaredOnType()); }
typeParameters.addAll(method.declaringType().getTypeParameters()); for (ResolvedTypeParameterDeclaration tp : typeParameters) { expectedType = replaceTypeParam(expectedType, tp, typeSolver);
typeParameters.addAll(method.declaringType().getTypeParameters()); for (ResolvedTypeParameterDeclaration tp : typeParameters) { expectedType = replaceTypeParam(expectedType, tp, typeSolver);
typeParameters.addAll(method.declaringType().getTypeParameters()); for (ResolvedTypeParameterDeclaration tp : typeParameters) { expectedType = replaceTypeParam(expectedType, tp, typeSolver);
@Test public void solveMethodOverrideCase() throws ParseException { CompilationUnit cu = parseSample("ClassWithMethods"); ClassOrInterfaceDeclaration classOrInterfaceDeclaration = Navigator.demandClass(cu, "A"); Context context = new ClassOrInterfaceDeclarationContext(classOrInterfaceDeclaration, typeSolver); SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("foo1", ImmutableList.of(), false, new ReflectionTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("A", ref.getCorrespondingDeclaration().declaringType().getName()); assertEquals(0, ref.getCorrespondingDeclaration().getNumberOfParams()); }
@Test public void solveMethodWithPrimitiveParameters() throws ParseException { CompilationUnit cu = parseSample("ClassWithMethods"); ClassOrInterfaceDeclaration classOrInterfaceDeclaration = Navigator.demandClass(cu, "A"); Context context = new ClassOrInterfaceDeclarationContext(classOrInterfaceDeclaration, typeSolver); ResolvedType intType = ResolvedPrimitiveType.INT; SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("foo3", ImmutableList.of(intType), false, new ReflectionTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("A", ref.getCorrespondingDeclaration().declaringType().getName()); assertEquals(1, ref.getCorrespondingDeclaration().getNumberOfParams()); }
@Test public void solveMethodInheritedCase() throws ParseException { CompilationUnit cu = parseSample("ClassWithMethods"); ClassOrInterfaceDeclaration classOrInterfaceDeclaration = Navigator.demandClass(cu, "A"); Context context = new ClassOrInterfaceDeclarationContext(classOrInterfaceDeclaration, typeSolver); SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("foo2", ImmutableList.of(), false, new ReflectionTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("Super", ref.getCorrespondingDeclaration().declaringType().getName()); assertEquals(0, ref.getCorrespondingDeclaration().getNumberOfParams()); }
@Test public void solveMethodSimpleCase() throws ParseException { CompilationUnit cu = parseSample("ClassWithMethods"); ClassOrInterfaceDeclaration classOrInterfaceDeclaration = Navigator.demandClass(cu, "A"); Context context = new ClassOrInterfaceDeclarationContext(classOrInterfaceDeclaration, typeSolver); SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("foo0", ImmutableList.of(), false, new ReflectionTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("A", ref.getCorrespondingDeclaration().declaringType().getName()); assertEquals(0, ref.getCorrespondingDeclaration().getNumberOfParams()); }
@Test public void solveMethodWithMoreSpecializedParameter() throws ParseException { CompilationUnit cu = parseSample("ClassWithMethods"); ClassOrInterfaceDeclaration classOrInterfaceDeclaration = Navigator.demandClass(cu, "A"); Context context = new ClassOrInterfaceDeclarationContext(classOrInterfaceDeclaration, typeSolver); ResolvedType stringType = new ReferenceTypeImpl(new ReflectionClassDeclaration(String.class, typeSolver), typeSolver); SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("foo4", ImmutableList.of(stringType), false, new ReflectionTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("A", ref.getCorrespondingDeclaration().declaringType().getName()); assertEquals(1, ref.getCorrespondingDeclaration().getNumberOfParams()); }