@Override public void visitToken(final DetailAST node) { final DetailAST generic = DiamondOperatorCheck .findFirstChildNodeOfType( node.findFirstToken(TokenTypes.TYPE), TokenTypes.TYPE_ARGUMENTS ); final DetailAST assign = node.findFirstToken(TokenTypes.ASSIGN); final DetailAST instance; if (assign == null || generic == null) { instance = null; } else { instance = assign.getFirstChild().getFirstChild(); } if (instance != null && instance.getType() == TokenTypes.LITERAL_NEW && DiamondOperatorCheck.isNotObjectBlock(instance) && DiamondOperatorCheck.isNotArray(instance)) { final DetailAST type = DiamondOperatorCheck.findFirstChildNodeOfType( instance, TokenTypes.TYPE_ARGUMENTS ); if (generic.equalsTree(type)) { log(type, "Use diamond operator"); } } }
@Override public void visitToken(final DetailAST node) { final DetailAST generic = DiamondOperatorCheck .findFirstChildNodeOfType( node.findFirstToken(TokenTypes.TYPE), TokenTypes.TYPE_ARGUMENTS ); final DetailAST assign = node.findFirstToken(TokenTypes.ASSIGN); final DetailAST instance; if (assign == null || generic == null) { instance = null; } else { instance = assign.getFirstChild().getFirstChild(); } if (instance != null && instance.getType() == TokenTypes.LITERAL_NEW && DiamondOperatorCheck.isNotObjectBlock(instance) && DiamondOperatorCheck.isNotArray(instance)) { final DetailAST type = DiamondOperatorCheck.findFirstChildNodeOfType( instance, TokenTypes.TYPE_ARGUMENTS ); if (generic.equalsTree(type)) { log(type, "Use diamond operator"); } } }
@Override public void visitToken(DetailAST variableDefNode) { final DetailAST assignNode = variableDefNode.findFirstToken(TokenTypes.ASSIGN); if (assignNode != null) { final DetailAST newNode = assignNode.getFirstChild().getFirstChild(); // we check only creation by NEW if (newNode.getType() == TokenTypes.LITERAL_NEW) { final DetailAST variableDefNodeType = variableDefNode.findFirstToken(TokenTypes.TYPE); final DetailAST varDefArguments = getFirstTypeArgumentsToken(variableDefNodeType); // generics has to be on left side if (varDefArguments != null && newNode.getLastChild().getType() != TokenTypes.OBJBLOCK // arrays can not be generics && newNode.findFirstToken(TokenTypes.ARRAY_DECLARATOR) == null) { final DetailAST typeArgs = getFirstTypeArgumentsToken(newNode); if (varDefArguments.equalsTree(typeArgs)) { log(typeArgs, MSG_KEY); } } } } }