@Override protected Boolean visitChildren(final AstNode node, final Void data) { if (_abort) { return Boolean.FALSE; } return super.visitChildren(node, data); }
@Override public Boolean visitDoWhileStatement(final DoWhileStatement node, final Void _) { ++_loopOrTryDepth; try { return super.visitDoWhileStatement(node, _); } finally { --_loopOrTryDepth; } }
@Override public Boolean visitForStatement(final ForStatement node, final Void _) { ++_loopOrTryDepth; try { return super.visitForStatement(node, _); } finally { --_loopOrTryDepth; } }
@Override public Boolean visitAssignmentExpression(final AssignmentExpression node, final Void p) { final Expression left = node.getLeft(); final Variable variable = left.getUserData(Keys.VARIABLE); if (variable != null && variable.isParameter()) { _unassignedParameters.remove(variable.getOriginalParameter()); return super.visitAssignmentExpression(node, p); } ParameterDefinition parameter = left.getUserData(Keys.PARAMETER_DEFINITION); if (parameter == null && left instanceof IdentifierExpression) { parameter = _parametersByName.get(((IdentifierExpression) left).getIdentifier()); } if (parameter != null) { _unassignedParameters.remove(parameter); } return super.visitAssignmentExpression(node, p); }
@Override public Void visitBinaryOperatorExpression(final BinaryOperatorExpression node, final Void data) { final BinaryOperatorType operator = node.getOperator(); final TypeReference resultType = operator.isRelational() ? BuiltinTypes.Boolean : getType(node); processBinaryExpressionOperand(node.getRight(), node.getLeft(), operator, resultType); processBinaryExpressionOperand(node.getLeft(), node.getRight(), operator, resultType); return super.visitBinaryOperatorExpression(node, data); }
@Override public Void visitCastExpression(final CastExpression node, final Void data) { final Expression child = node.getExpression(); parenthesizeIfRequired(child, UNARY); if (child instanceof UnaryOperatorExpression) { final UnaryOperatorExpression childUnary = (UnaryOperatorExpression) child; if (childUnary.getOperator() != UnaryOperatorType.BITWISE_NOT && childUnary.getOperator() != UnaryOperatorType.NOT) { if (canTypeBeMisinterpretedAsExpression(node.getType())) { parenthesize(child); } } } if (child instanceof PrimitiveExpression) { final PrimitiveExpression primitive = (PrimitiveExpression) child; final Object primitiveValue = primitive.getValue(); if (primitiveValue instanceof Number) { final Number number = (Number) primitiveValue; if (primitiveValue instanceof Float || primitiveValue instanceof Double) { if (number.doubleValue() < 0d) { parenthesize(child); } } else if (number.longValue() < 0L) { parenthesize(child); } } } return super.visitCastExpression(node, data); }
@Override public Void visitFieldDeclaration(final FieldDeclaration node, final Void data) { final TypeReference leftType = getType(node.getReturnType()); if (leftType != null) { for (final VariableInitializer initializer : node.getVariables()) { processPossibleTypeCast(initializer.getInitializer(), leftType); } } return super.visitFieldDeclaration(node, data); }
public TResult visitConstructorDeclaration(final ConstructorDeclaration node, final Void _) { assert (context.getCurrentMethod() == null); try { context.setCurrentMethod(node.getUserData(Keys.METHOD_DEFINITION)); return super.visitConstructorDeclaration(node, _); } finally { context.setCurrentMethod(null); } }
@Override public Boolean visitForEachStatement(final ForEachStatement node, final Void _) { ++_loopOrTryDepth; try { if (StringUtilities.equals(node.getVariableName(), _variableName)) { ++_assignmentCount; } return super.visitForEachStatement(node, _); } finally { --_loopOrTryDepth; } }
return super.visitConditionalExpression(node, data);
@Override public Boolean visitAssignmentExpression(final AssignmentExpression node, final Void _) { final Expression left = node.getLeft(); final Variable variable = left.getUserData(Keys.VARIABLE); if (variable != null && variable.isParameter()) { _unassignedParameters.remove(variable.getOriginalParameter()); return super.visitAssignmentExpression(node, _); } ParameterDefinition parameter = left.getUserData(Keys.PARAMETER_DEFINITION); if (parameter == null && left instanceof IdentifierExpression) { parameter = _parametersByName.get(((IdentifierExpression) left).getIdentifier()); } if (parameter != null) { _unassignedParameters.remove(parameter); } return super.visitAssignmentExpression(node, _); }
@Override public Void visitBinaryOperatorExpression(final BinaryOperatorExpression node, final Void data) { final TypeReference leftType = getType(node.getLeft()); final TypeReference rightType = getType(node.getRight()); processBinaryExpressionOperand(node.getLeft(), rightType, node.getOperator()); processBinaryExpressionOperand(node.getRight(), leftType, node.getOperator()); return super.visitBinaryOperatorExpression(node, data); }
@Override public Void visitCastExpression(final CastExpression node, final Void data) { final Expression child = node.getExpression(); parenthesizeIfRequired(child, UNARY); if (child instanceof UnaryOperatorExpression) { final UnaryOperatorExpression childUnary = (UnaryOperatorExpression) child; if (childUnary.getOperator() != UnaryOperatorType.BITWISE_NOT && childUnary.getOperator() != UnaryOperatorType.NOT) { if (canTypeBeMisinterpretedAsExpression(node.getType())) { parenthesize(child); } } } if (child instanceof PrimitiveExpression) { final PrimitiveExpression primitive = (PrimitiveExpression) child; final Object primitiveValue = primitive.getValue(); if (primitiveValue instanceof Number) { final Number number = (Number) primitiveValue; if (primitiveValue instanceof Float || primitiveValue instanceof Double) { if (number.doubleValue() < 0d) { parenthesize(child); } } else if (number.longValue() < 0L) { parenthesize(child); } } } return super.visitCastExpression(node, data); }
@Override public Void visitFieldDeclaration(final FieldDeclaration node, final Void data) { final TypeReference leftType = getType(node.getReturnType()); if (leftType != null) { for (final VariableInitializer initializer : node.getVariables()) { processPossibleTypeCast(initializer.getInitializer(), leftType); } } return super.visitFieldDeclaration(node, data); }
public TResult visitConstructorDeclaration(final ConstructorDeclaration node, final Void p) { assert (context.getCurrentMethod() == null); try { context.setCurrentMethod(node.getUserData(Keys.METHOD_DEFINITION)); return super.visitConstructorDeclaration(node, p); } finally { context.setCurrentMethod(null); } }
@Override public Boolean visitForEachStatement(final ForEachStatement node, final Void _) { ++_loopOrTryDepth; try { if (StringUtilities.equals(node.getVariableName(), _variableName)) { ++_assignmentCount; } return super.visitForEachStatement(node, _); } finally { --_loopOrTryDepth; } }
return super.visitConditionalExpression(node, data);
@Override public S visitTryCatchStatement(final TryCatchStatement node, final T data) { return visitChildren(node, data); } }
@Override public Boolean visitAssignmentExpression(final AssignmentExpression node, final Void _) { final Expression left = node.getLeft(); final Variable variable = left.getUserData(Keys.VARIABLE); if (variable != null && variable.isParameter()) { _unassignedParameters.remove(variable.getOriginalParameter()); return super.visitAssignmentExpression(node, _); } ParameterDefinition parameter = left.getUserData(Keys.PARAMETER_DEFINITION); if (parameter == null && left instanceof IdentifierExpression) { parameter = _parametersByName.get(((IdentifierExpression) left).getIdentifier()); } if (parameter != null) { _unassignedParameters.remove(parameter); } return super.visitAssignmentExpression(node, _); }
@Override public Void visitBinaryOperatorExpression(final BinaryOperatorExpression node, final Void data) { final TypeReference leftType = getType(node.getLeft()); final TypeReference rightType = getType(node.getRight()); processBinaryExpressionOperand(node.getLeft(), rightType, node.getOperator()); processBinaryExpressionOperand(node.getRight(), leftType, node.getOperator()); return super.visitBinaryOperatorExpression(node, data); }