private static List<Type> getTypes(ListTree<TypeTree> superInterfaces) { List<Type> types = new ArrayList<>(superInterfaces.size()); for (TypeTree superInterface : superInterfaces) { types.add(superInterface.symbolType()); } return types; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private static void moveAnnotations(TypeTree result, TypeTree firstIdentifier) { List<AnnotationTree> firstIdentifierAnnotations = firstIdentifier.annotations(); // move the annotations from the first identifier to the member select or the parameterized type if (!firstIdentifierAnnotations.isEmpty()) { ((JavaTree.AnnotatedTypeTree) result).complete(firstIdentifierAnnotations); ((JavaTree.AnnotatedTypeTree) firstIdentifier).complete(ImmutableList.<AnnotationTree>of()); } }
@Override public void visitNode(Tree tree) { MethodTree methodTree = (MethodTree) tree; if (!isPrivate(methodTree) && !isOverriding(methodTree)) { methodTree.returnType().accept(new CheckWildcard()); } }
private String extractInterfaceName(TypeTree interfaceTree) { if (interfaceTree.is(Tree.Kind.IDENTIFIER)) { return ((IdentifierTree) interfaceTree).name(); } else if (interfaceTree.is(Tree.Kind.MEMBER_SELECT)) { return ((MemberSelectExpressionTree) interfaceTree).identifier().name(); } else if (interfaceTree.is(Tree.Kind.PARAMETERIZED_TYPE)) { return extractInterfaceName(((ParameterizedTypeTree) interfaceTree).type()); } throw new IllegalStateException("cannot process " + interfaceTree.toString()); }
@Override public void visitNode(Tree tree) { MethodTree methodTree = (MethodTree) tree; if (!isPrivate(methodTree) && !isOverriding(methodTree)) { methodTree.returnType().accept(new CheckWildcard()); } }
private static boolean isCompatibleWithThrows(Type exceptionType, List<TypeTree> throwsClauses) { for (TypeTree typeTree : throwsClauses) { if (exceptionType.isSubtypeOf(typeTree.symbolType())) { return true; } } return false; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private static Optional<Type> findInterruptingType(VariableTree parameter) { if (parameter.type().is(Tree.Kind.UNION_TYPE)) { return ((UnionTypeTree) parameter.type()).typeAlternatives().stream() .map(TypeTree::symbolType) .filter(INTERRUPTING_TYPE_PREDICATE) .findFirst(); } return Optional.of(parameter) .map(VariableTree::symbol) .map(Symbol::type) .filter(INTERRUPTING_TYPE_PREDICATE); }
@Override public void visitVariable(VariableTree variableTree) { ParameterizedTypeTreeVisitor treeVisitor = new ParameterizedTypeTreeVisitor(); variableTree.type().accept(treeVisitor); withResourceTypeVariable = treeVisitor.hasResourceTypeVariable(); super.visitVariable(variableTree); }
private static void moveAnnotations(TypeTree result, TypeTree firstIdentifier) { List<AnnotationTree> firstIdentifierAnnotations = firstIdentifier.annotations(); // move the annotations from the first identifier to the member select or the parameterized type if (!firstIdentifierAnnotations.isEmpty()) { ((JavaTree.AnnotatedTypeTree) result).complete(firstIdentifierAnnotations); ((JavaTree.AnnotatedTypeTree) firstIdentifier).complete(ImmutableList.<AnnotationTree>of()); } }
private boolean returnsString() { if (returnType != null) { return returnType.symbolType().is("java.lang.String"); } return false; } }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private boolean returnsPrimitive(String primitive) { if (returnType != null) { return returnType.is(Tree.Kind.PRIMITIVE_TYPE) && primitive.equals(((PrimitiveTypeTree) returnType).keyword().text()); } return false; }
private static List<Type> getCatchedExceptions(List<CatchTree> catches) { List<Type> result = new ArrayList<>(); for (CatchTree element : catches) { result.add(element.parameter().type().symbolType()); } return result; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private boolean returnsPrimitive(String primitive) { if (returnType != null) { return returnType.is(Tree.Kind.PRIMITIVE_TYPE) && primitive.equals(((PrimitiveTypeTree) returnType).keyword().text()); } return false; }
private void checkExceptionType(TypeTree exceptionTypeTree) { if (exceptionTypeTree.symbolType().is("java.lang.IllegalMonitorStateException")) { reportIssue(exceptionTypeTree, "Refactor this piece of code to not catch IllegalMonitorStateException"); } }
@Override public void visitForEachStatement(ForEachStatement tree) { scan(tree.variable()); scan(tree.expression()); TypeTree typeTree = tree.variable().type(); if (typeTree.is(Tree.Kind.VAR_TYPE)) { JavaType iteratedObjectType = getIteratedObjectType((JavaType) tree.expression().symbolType()); setInferedType(upwardProjection(iteratedObjectType), (DeferredType) typeTree.symbolType()); } // scan the body only after handling type of variable scan(tree.statement()); }