use of com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration in project javaparser by javaparser.
the class CompilationUnitContextResolutionTest method solveTypeInSamePackage.
@Test
public void solveTypeInSamePackage() {
CompilationUnit cu = parseSample("CompilationUnitWithImports");
Context context = new CompilationUnitContext(cu, typeSolver);
ResolvedReferenceTypeDeclaration otherClass = mock(ResolvedReferenceTypeDeclaration.class);
when(otherClass.getQualifiedName()).thenReturn("com.foo.OtherClassInSamePackage");
MemoryTypeSolver memoryTypeSolver = new MemoryTypeSolver();
memoryTypeSolver.addDeclaration("com.foo.OtherClassInSamePackage", otherClass);
SymbolReference<ResolvedTypeDeclaration> ref = context.solveType("OtherClassInSamePackage", memoryTypeSolver);
assertEquals(true, ref.isSolved());
assertEquals("com.foo.OtherClassInSamePackage", ref.getCorrespondingDeclaration().getQualifiedName());
}
use of com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration in project javaparser by javaparser.
the class ReflectionInterfaceDeclarationTest method testGetDeclaredMethods.
@Test
public void testGetDeclaredMethods() {
TypeSolver typeResolver = new ReflectionTypeSolver();
ResolvedReferenceTypeDeclaration list = new ReflectionInterfaceDeclaration(List.class, typeResolver);
List<ResolvedMethodDeclaration> methods = list.getDeclaredMethods().stream().sorted((a, b) -> a.getName().compareTo(b.getName())).collect(Collectors.toList());
if (isJava9()) {
assertEquals(40, methods.size());
assertEquals("clear", methods.get(4).getName());
assertEquals(true, methods.get(4).isAbstract());
assertEquals(0, methods.get(4).getNumberOfParams());
assertEquals("contains", methods.get(5).getName());
assertEquals(true, methods.get(5).isAbstract());
assertEquals(1, methods.get(5).getNumberOfParams());
assertEquals(true, methods.get(5).getParam(0).getType().isReferenceType());
assertEquals(Object.class.getCanonicalName(), methods.get(5).getParam(0).getType().asReferenceType().getQualifiedName());
} else {
assertEquals(28, methods.size());
assertEquals("clear", methods.get(4).getName());
assertEquals(true, methods.get(4).isAbstract());
assertEquals(0, methods.get(4).getNumberOfParams());
assertEquals("contains", methods.get(5).getName());
assertEquals(true, methods.get(5).isAbstract());
assertEquals(1, methods.get(5).getNumberOfParams());
assertEquals(true, methods.get(5).getParam(0).getType().isReferenceType());
assertEquals(Object.class.getCanonicalName(), methods.get(5).getParam(0).getType().asReferenceType().getQualifiedName());
}
}
use of com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration in project javaparser by javaparser.
the class MethodCallExprContextResolutionTest method assertCanSolveGenericMethodCallCanInferFromArguments.
private void assertCanSolveGenericMethodCallCanInferFromArguments(String callMethodName) {
MethodCallExpr methodCallExpr = getMethodCallExpr("genericMethodTest", callMethodName);
CombinedTypeSolver typeSolver = createTypeSolver();
MethodCallExprContext context = new MethodCallExprContext(methodCallExpr, typeSolver);
ResolvedReferenceTypeDeclaration stringType = typeSolver.solveType("java.lang.String");
List<ResolvedType> argumentsTypes = new ArrayList<>();
argumentsTypes.add(new ReferenceTypeImpl(stringType, typeSolver));
Optional<MethodUsage> ref = context.solveMethodAsUsage(callMethodName, argumentsTypes, typeSolver);
assertTrue(ref.isPresent());
assertEquals("MethodCalls", ref.get().declaringType().getQualifiedName());
assertEquals(Collections.singletonList("java.lang.String"), ref.get().typeParametersMap().getTypes().stream().map(ty -> ty.asReferenceType().describe()).collect(Collectors.toList()));
}
use of com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration in project javaparser by javaparser.
the class JavaParserTypeParameterResolutionTest method declaredOnMethodNegativeCase.
@Test
public void declaredOnMethodNegativeCase() {
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());
}
Aggregations