private static boolean isArrayElement(ExpressionTree expression) { return expression.is(Tree.Kind.BRACKET_MEMBER_EXPRESSION) && ((BracketMemberExpressionTree) expression).object().types().containsOnly(Type.Kind.ARRAY); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree tree) { if (tree.variable().is(Tree.Kind.BRACKET_MEMBER_EXPRESSION)) { BracketMemberExpressionTree memberExpression = (BracketMemberExpressionTree) tree.variable(); if (memberExpression.object().types().containsOnly(Kind.ARRAY)) { ExpressionTree arrayIndex = memberExpression.property(); if (arrayIndex.types().containsOnly(Kind.STRING)) { addIssue(arrayIndex, String.format(MESSAGE, CheckUtils.asString(memberExpression.object()))); } } } super.visitAssignmentExpression(tree); } }
private static void visitInitializedDeclaration( ListMultimap<String, Declaration> declarationsByObject, VariableDeclarationTree declaration, InitializedBindingElementTree initializedDeclaration ) { if (initializedDeclaration.left().is(Kind.BINDING_IDENTIFIER)) { String varName = ((IdentifierTree) initializedDeclaration.left()).name(); if (initializedDeclaration.right().is(Kind.DOT_MEMBER_EXPRESSION)) { DotMemberExpressionTree dotMemberExpression = (DotMemberExpressionTree) initializedDeclaration.right(); if (dotMemberExpression.property().name().equals(varName)) { addDeclaration(declarationsByObject, dotMemberExpression, declaration, initializedDeclaration); } } else if (initializedDeclaration.right().is(Kind.BRACKET_MEMBER_EXPRESSION)) { BracketMemberExpressionTree bracketMemberExpression = (BracketMemberExpressionTree) initializedDeclaration.right(); if (bracketMemberExpression.property().is(Kind.NUMERIC_LITERAL) && ALLOWED_INDEXES.contains(((LiteralTree) bracketMemberExpression.property()).value())) { addDeclaration(declarationsByObject, bracketMemberExpression, declaration, initializedDeclaration); } } } }
private static boolean isWindowBracketAccess(ExpressionTree tree) { return tree.is(Tree.Kind.BRACKET_MEMBER_EXPRESSION) && ((BracketMemberExpressionTree) tree).object().types().contains(Type.Kind.WINDOW); }
private static boolean isArrayElement(ExpressionTree expression) { return expression.is(Tree.Kind.BRACKET_MEMBER_EXPRESSION) && ((BracketMemberExpressionTree) expression).object().types().containsOnly(Type.Kind.ARRAY); }
private static boolean isElementWrite(ExpressionStatementTree statement, Usage usage) { if (statement.expression().is(KindSet.ASSIGNMENT_KINDS)) { ExpressionTree variable = ((AssignmentExpressionTree) statement.expression()).variable(); if (variable.is(Kind.BRACKET_MEMBER_EXPRESSION)) { return ((BracketMemberExpressionTree) variable).object() == usage.identifierTree(); } } return false; }