@Override public void visitParameterizedType(ParameterizedTypeTree parameterizedTypeTree) { for (Iterator<Tree> iterator = parameterizedTypeTree.typeArguments().iterator(); iterator.hasNext() && !withResourceTypeVariable; ) { TypeTreeVisitor treeVisitor = new TypeTreeVisitor(); iterator.next().accept(treeVisitor); withResourceTypeVariable = treeVisitor.isResourceTypeInstance(); } super.visitParameterizedType(parameterizedTypeTree); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { scan(tree.type()); scan(tree.typeArguments()); }
private static boolean isCollectionOfSerializable(Tree tree) { if (tree.is(Tree.Kind.PARAMETERIZED_TYPE)) { ParameterizedTypeTree typeTree = (ParameterizedTypeTree) tree; if (isSubtypeOfCollectionApi(typeTree.symbolType())) { return typeTree.typeArguments().stream().allMatch(SerializableFieldInSerializableClassCheck::isCollectionOfSerializable); } } return isSerializable(tree); }
private static boolean isCollectionOfSerializable(Tree tree) { if (tree.is(Tree.Kind.PARAMETERIZED_TYPE)) { ParameterizedTypeTree typeTree = (ParameterizedTypeTree) tree; if (isSubtypeOfCollectionApi(typeTree.symbolType())) { return typeTree.typeArguments().stream().allMatch(SerializableFieldInSerializableClassCheck::isCollectionOfSerializable); } } return isSerializable(tree); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { resolveAs(tree.type(), JavaSymbol.TYP); resolveAs((List<Tree>) tree.typeArguments(), JavaSymbol.TYP); JavaType type = getType(tree.type()); //Type substitution for parametrized type. TypeSubstitution typeSubstitution = new TypeSubstitution(); if (tree.typeArguments().size() <= type.getSymbol().typeVariableTypes.size()) { for (int i = 0; i < tree.typeArguments().size(); i++) { typeSubstitution.add(type.getSymbol().typeVariableTypes.get(i), getType(tree.typeArguments().get(i))); } } registerType(tree, parametrizedTypeCache.getParametrizedTypeType(type.getSymbol(), typeSubstitution)); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { resolveAs(tree.type(), JavaSymbol.TYP); resolveAs((List<Tree>) tree.typeArguments(), JavaSymbol.TYP); registerType(tree, parametrizedTypeWithTypeArguments(getType(tree.type()).getSymbol(), tree.typeArguments())); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { checkTypes(tree.type()); checkTypes((List<Tree>) tree.typeArguments()); super.visitParameterizedType(tree); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { checkTypes(tree.type()); checkTypes((List<Tree>) tree.typeArguments()); super.visitParameterizedType(tree); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { resolveAs(tree.type(), JavaSymbol.TYP); resolveAs((List<Tree>) tree.typeArguments(), JavaSymbol.TYP); registerType(tree, parametrizedTypeWithTypeArguments(getType(tree.type()).getSymbol(), tree.typeArguments())); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { checkTypes(tree.type()); checkTypes(tree.typeArguments()); super.visitParameterizedType(tree); }
private static boolean isParameterizedType(TypeTree type) { if (type.is(Tree.Kind.ARRAY_TYPE)) { return isParameterizedType(((ArrayTypeTree) type).type()); } return type.is(Tree.Kind.PARAMETERIZED_TYPE) && !((ParameterizedTypeTree) type).typeArguments().isEmpty(); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { scan(tree.annotations()); scan(tree.type()); scan(tree.typeArguments()); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { scan(tree.annotations()); scan(tree.type()); scan(tree.typeArguments()); }
private static boolean isParameterizedType(TypeTree type) { if (type.is(Tree.Kind.ARRAY_TYPE)) { return isParameterizedType(((ArrayTypeTree) type).type()); } return type.is(Tree.Kind.PARAMETERIZED_TYPE) && !((ParameterizedTypeTree) type).typeArguments().isEmpty(); }
@Override public void visitParameterizedType(ParameterizedTypeTree tree) { scan(tree.annotations()); scan(tree.type()); scan(tree.typeArguments()); }
private static SyntaxToken getIdentifierToken(TypeTree typeTree) { if (typeTree.is(Tree.Kind.IDENTIFIER)) { return ((IdentifierTree) typeTree).identifierToken(); } else if (typeTree.is(Tree.Kind.MEMBER_SELECT)) { return ((MemberSelectExpressionTree) typeTree).identifier().identifierToken(); } else { return ((ParameterizedTypeTree) typeTree).typeArguments().closeBracketToken(); } }
private static SyntaxToken getIdentifierToken(TypeTree typeTree) { if (typeTree.is(Tree.Kind.IDENTIFIER)) { return ((IdentifierTree) typeTree).identifierToken(); } else if (typeTree.is(Tree.Kind.MEMBER_SELECT)) { return ((MemberSelectExpressionTree) typeTree).identifier().identifierToken(); } else { return ((ParameterizedTypeTree) typeTree).typeArguments().closeBracketToken(); } }
@Override public void visitNode(Tree tree) { NewClassTree newClassTree = (NewClassTree) tree; TypeTree newTypeTree = newClassTree.identifier(); if (newClassTree.classBody() == null && isParameterizedType(newTypeTree)) { TypeTree type = getTypeFromExpression(tree.parent(), expressionKindsToCheck); if (type != null && isParameterizedType(type)) { reportIssue( ((ParameterizedTypeTree) newTypeTree).typeArguments(), "Replace the type specification in this constructor call with the diamond operator (\"<>\")." + context.getJavaVersion().java7CompatibilityMessage()); } } }
@Override public void visitNode(Tree tree) { NewClassTree newClassTree = (NewClassTree) tree; TypeTree newTypeTree = newClassTree.identifier(); if (newClassTree.classBody() == null && isParameterizedType(newTypeTree)) { TypeTree type = getTypeFromExpression(tree.parent(), expressionKindsToCheck); if (type != null && isParameterizedType(type)) { reportIssue( ((ParameterizedTypeTree) newTypeTree).typeArguments(), "Replace the type specification in this constructor call with the diamond operator (\"<>\")." + context.getJavaVersion().java7CompatibilityMessage()); } } }
@Override public void visitNewClass(NewClassTree tree) { checkTypes(tree.typeArguments()); if (tree.identifier().is(Tree.Kind.PARAMETERIZED_TYPE)) { scan(tree.enclosingExpression()); checkTypes(((ParameterizedTypeTree) tree.identifier()).typeArguments()); scan(tree.typeArguments()); scan(tree.arguments()); scan(tree.classBody()); } else { super.visitNewClass(tree); } }