@Override public boolean matches(MethodInvocationTree t, VisitorState state) { List<? extends ExpressionTree> args = t.getArguments(); if (args.size() <= argNum) { return false; } ExpressionTree arg = args.get(argNum); JCExpression methodSelect = (JCExpression) t.getMethodSelect(); if (methodSelect instanceof JCFieldAccess) { JCFieldAccess fieldAccess = (JCFieldAccess) methodSelect; return ASTHelpers.sameVariable(fieldAccess.getExpression(), arg); } else if (methodSelect instanceof JCIdent) { // A bare method call: "equals(foo)". Receiver is implicitly "this". return "this".equals(arg.toString()); } return false; } };
expr = ((JCMethodInvocation) expr).getMethodSelect(); if (expr instanceof JCFieldAccess) { expr = ((JCFieldAccess) expr).getExpression();
return receiverMatcher.matches(fieldAccess.getExpression(), state); } else if (item instanceof JCIdent) {
JCTree.JCFieldAccess fieldAccess = (JCTree.JCFieldAccess) tree; com.sun.tools.javac.util.Name name = fieldAccess.getIdentifier(); JCTree.JCExpression expression = fieldAccess.getExpression(); String methodName = name.toString(); String decClazz = expression.toString();
} else { return SuggestedFix.replace( ((JCFieldAccess) toReplace).getExpression(), declaration.getName().toString());
This t = new This(); setConversionPositionInfo(t, "this", getPosition(node)); set(node, t.rawQualifier(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; Super s = new Super(); setConversionPositionInfo(s, "super", getPosition(node)); set(node, s.rawQualifier(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; ClassLiteral c = new ClassLiteral(); setConversionPositionInfo(c, "class", getPosition(node)); set(node, c.rawTypeReference(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; set(node, new Select().astIdentifier(id).rawOperand(toTree(node.getExpression())));
return receiverMatcher.matches(fieldAccess.getExpression(), state); } else if (item instanceof JCIdent) {
This t = new This(); setConversionPositionInfo(t, "this", getPosition(node)); set(node, t.rawQualifier(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; Super s = new Super(); setConversionPositionInfo(s, "super", getPosition(node)); set(node, s.rawQualifier(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; ClassLiteral c = new ClassLiteral(); setConversionPositionInfo(c, "class", getPosition(node)); set(node, c.rawTypeReference(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; set(node, new Select().astIdentifier(id).rawOperand(toTree(node.getExpression())));
This t = new This(); setConversionPositionInfo(t, "this", getPosition(node)); set(node, t.rawQualifier(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; Super s = new Super(); setConversionPositionInfo(s, "super", getPosition(node)); set(node, s.rawQualifier(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; ClassLiteral c = new ClassLiteral(); setConversionPositionInfo(c, "class", getPosition(node)); set(node, c.rawTypeReference(toTree(node.getExpression(), FlagKey.TYPE_REFERENCE))); return; set(node, new Select().astIdentifier(id).rawOperand(toTree(node.getExpression())));
/** * Suggests replacing with Arrays.equals(a, b). Also adds the necessary import statement for * java.util.Arrays. */ @Override public Description matchMethodInvocation(MethodInvocationTree t, VisitorState state) { String arg1; String arg2; if (instanceEqualsMatcher.matches(t, state)) { arg1 = ((JCFieldAccess) t.getMethodSelect()).getExpression().toString(); arg2 = t.getArguments().get(0).toString(); } else if (staticEqualsMatcher.matches(t, state)) { arg1 = t.getArguments().get(0).toString(); arg2 = t.getArguments().get(1).toString(); } else { return NO_MATCH; } Fix fix = SuggestedFix.builder() .replace(t, "Arrays.equals(" + arg1 + ", " + arg2 + ")") .addImport("java.util.Arrays") .build(); return describeMatch(t, fix); } }
@Override public boolean matches(MethodInvocationTree t, VisitorState state) { List<? extends ExpressionTree> args = t.getArguments(); if (args.size() <= argNum) { return false; } ExpressionTree arg = args.get(argNum); JCExpression methodSelect = (JCExpression) t.getMethodSelect(); if (methodSelect instanceof JCFieldAccess) { JCFieldAccess fieldAccess = (JCFieldAccess) methodSelect; return ASTHelpers.sameVariable(fieldAccess.getExpression(), arg); } else if (methodSelect instanceof JCIdent) { // A bare method call: "equals(foo)". Receiver is implicitly "this". return "this".equals(arg.toString()); } return false; } };
private boolean isReceiver( JCTree tree ) { Tree parent = _tp.getParent( tree ); if( parent instanceof JCTree.JCFieldAccess ) { return ((JCTree.JCFieldAccess)parent).getExpression() == tree; } return false; }
private boolean isReceiver( JCTree tree ) { Tree parent = _tp.getParent( tree ); if( parent instanceof JCTree.JCFieldAccess ) { return ((JCTree.JCFieldAccess)parent).getExpression() == tree; } return false; }
@Override public ExpressionTree get(VisitorState state) { MethodInvocationTree method = (MethodInvocationTree) state.getPath().getLeaf(); return ((JCFieldAccess) method.getMethodSelect()).getExpression(); } };
Symbol importedType = ASTHelpers.getSymbol(access.getExpression()); if (importedType == null) { return null; Symbol sym = ASTHelpers.getSymbol(access.getExpression()); if (!(sym instanceof Symbol.TypeSymbol)) { return null; access.getExpression().toString(), canonicalOwner.toString(), identifier.toString(),
tree, rewriteArrayArgument( ((JCFieldAccess) tree.getMethodSelect()).getExpression(), state)); } else if (varargsHashCodeMethodMatcher.matches(tree, state)) {
} else { return SuggestedFix.replace( ((JCFieldAccess) toReplace).getExpression(), declaration.getName().toString());
/** * Suggests replacing with Arrays.equals(a, b). Also adds the necessary import statement for * java.util.Arrays. */ @Override public Description matchMethodInvocation(MethodInvocationTree t, VisitorState state) { String arg1; String arg2; if (instanceEqualsMatcher.matches(t, state)) { arg1 = state.getSourceForNode(((JCFieldAccess) t.getMethodSelect()).getExpression()); arg2 = state.getSourceForNode(t.getArguments().get(0)); } else if (staticEqualsMatcher.matches(t, state)) { arg1 = state.getSourceForNode(t.getArguments().get(0)); arg2 = state.getSourceForNode(t.getArguments().get(1)); } else { return NO_MATCH; } Fix fix = SuggestedFix.builder() .replace(t, "Arrays.equals(" + arg1 + ", " + arg2 + ")") .addImport("java.util.Arrays") .build(); return describeMatch(t, fix); } }
private static boolean buildChain(ExpressionTree expr, VisitorState state, List<Symbol> chain) { while (expr instanceof JCMethodInvocation) { expr = ((JCMethodInvocation) expr).getMethodSelect(); // if the method isn't an immutable protobuf getter, return false if (!IS_IMMUTABLE_PROTO_GETTER.matches(expr, state)) { return false; } if (expr instanceof JCFieldAccess) { expr = ((JCFieldAccess) expr).getExpression(); } chain.add(ASTHelpers.getSymbol(expr)); } return true; }
@Override public ExpressionTree get(VisitorState state) { MethodInvocationTree method = (MethodInvocationTree) state.getPath().getLeaf(); return ((JCFieldAccess) method.getMethodSelect()).getExpression(); } };