private static boolean isStringConcatenation(AssignmentExpressionTree tree) { return tree.symbolType().is("java.lang.String") && isConcatenation(tree); }
private static boolean isStringConcatenation(AssignmentExpressionTree tree) { return tree.symbolType().is("java.lang.String") && isConcatenation(tree); }
private boolean isStringConcatenation(AssignmentExpressionTree tree) { return isString(tree.symbolType()) && isConcatenation(tree); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree aet) { if(aet.is(Tree.Kind.ASSIGNMENT)) { Type varType = aet.symbolType(); ExpressionTree expr = aet.expression(); checkExpression(varType, expr); } super.visitAssignmentExpression(aet); }
@Override public void visitAssignmentExpression(AssignmentExpressionTree aet) { if(aet.is(Tree.Kind.ASSIGNMENT)) { Type varType = aet.symbolType(); ExpressionTree expr = aet.expression(); checkExpression(varType, expr); } super.visitAssignmentExpression(aet); }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { if (tree.is(Tree.Kind.METHOD_INVOCATION)) { visitMethodInvocationTree((MethodInvocationTree) tree); } else if (tree.is(Tree.Kind.VARIABLE)) { VariableTree variableTree = (VariableTree) tree; ExpressionTree initializer = variableTree.initializer(); if (initializer != null) { checkExpression(initializer, variableTree.type().symbolType()); } } else if (tree.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) tree; checkExpression(assignmentTree.expression(), assignmentTree.symbolType()); } else { NewClassTree newClassTree = (NewClassTree) tree; Symbol.TypeSymbol classSymbol = wrapperClassSymbol(newClassTree); if (classSymbol != null) { checkForUnboxing(newClassTree.arguments().get(0)); } } } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } if (tree.is(Tree.Kind.METHOD_INVOCATION)) { visitMethodInvocationTree((MethodInvocationTree) tree); } else if (tree.is(Tree.Kind.VARIABLE)) { VariableTree variableTree = (VariableTree) tree; ExpressionTree initializer = variableTree.initializer(); if (initializer != null) { checkExpression(initializer, variableTree.type().symbolType()); } } else if (tree.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) tree; checkExpression(assignmentTree.expression(), assignmentTree.symbolType()); } else { NewClassTree newClassTree = (NewClassTree) tree; Symbol.TypeSymbol classSymbol = wrapperClassSymbol(newClassTree); if (classSymbol != null) { ExpressionTree arg0 = newClassTree.arguments().get(0); checkForUnboxing(arg0); checkForUselessUnboxing(newClassTree.symbolType(), newClassTree.identifier(), arg0); } } }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { Type varType; ExpressionTree expr; if (tree.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree aet = (AssignmentExpressionTree) tree; varType = aet.symbolType(); expr = aet.expression(); checkExpression(varType, expr); } else if (tree.is(Tree.Kind.VARIABLE)) { VariableTree variableTree = (VariableTree) tree; varType = variableTree.type().symbolType(); expr = variableTree.initializer(); checkExpression(varType, expr); } else if (tree.is(Tree.Kind.METHOD_INVOCATION)) { checkMethodInvocationArgument((MethodInvocationTree) tree); } else if (tree.is(Tree.Kind.METHOD)) { MethodTreeImpl methodTree = (MethodTreeImpl) tree; Type returnType = methodTree.returnType() != null ? methodTree.returnType().symbolType() : null; if (returnType != null && isVarTypeErrorProne(returnType)) { methodTree.accept(new ReturnStatementVisitor(returnType)); } } } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } if (tree.is(Tree.Kind.METHOD_INVOCATION)) { visitMethodInvocationTree((MethodInvocationTree) tree); } else if (tree.is(Tree.Kind.VARIABLE)) { VariableTree variableTree = (VariableTree) tree; ExpressionTree initializer = variableTree.initializer(); if (initializer != null) { checkExpression(initializer, variableTree.type().symbolType()); } } else if (tree.is(Tree.Kind.ASSIGNMENT)) { AssignmentExpressionTree assignmentTree = (AssignmentExpressionTree) tree; checkExpression(assignmentTree.expression(), assignmentTree.symbolType()); } else { NewClassTree newClassTree = (NewClassTree) tree; Symbol.TypeSymbol classSymbol = wrapperClassSymbol(newClassTree); if (classSymbol != null) { ExpressionTree arg0 = newClassTree.arguments().get(0); checkForUnboxing(arg0); checkForUselessUnboxing(newClassTree.symbolType(), newClassTree.identifier(), arg0); } } }