| package org.checkerframework.dataflow.expression; |
| |
| /** |
| * A simple visitor for {@link JavaExpression}. |
| * |
| * @param <R> the return type of the visit methods |
| * @param <P> the parameter passed to the visit methods |
| */ |
| public abstract class JavaExpressionVisitor<R, P> { |
| |
| /** |
| * Visits the given {@code javaExpr}. |
| * |
| * @param javaExpr the expression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the expression |
| */ |
| public R visit(JavaExpression javaExpr, P p) { |
| return javaExpr.accept(this, p); |
| } |
| |
| /** |
| * Visit an {@link ArrayAccess}. |
| * |
| * @param arrayAccessExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code arrayAccessExpr} |
| */ |
| protected abstract R visitArrayAccess(ArrayAccess arrayAccessExpr, P p); |
| /** |
| * Visit an {@link ArrayCreation}. |
| * |
| * @param arrayCreationExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code arrayCreationExpr} |
| */ |
| protected abstract R visitArrayCreation(ArrayCreation arrayCreationExpr, P p); |
| |
| /** |
| * Visit a {@link BinaryOperation}. |
| * |
| * @param binaryOpExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code binaryOpExpr} |
| */ |
| protected abstract R visitBinaryOperation(BinaryOperation binaryOpExpr, P p); |
| |
| /** |
| * Visit a {@link ClassName}. |
| * |
| * @param classNameExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code classNameExpr} |
| */ |
| protected abstract R visitClassName(ClassName classNameExpr, P p); |
| |
| /** |
| * Visit a {@link FieldAccess}. |
| * |
| * @param fieldAccessExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code fieldAccessExpr} |
| */ |
| protected abstract R visitFieldAccess(FieldAccess fieldAccessExpr, P p); |
| |
| /** |
| * Visit a {@link FormalParameter}. |
| * |
| * @param parameterExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code parameterExpr} |
| */ |
| protected abstract R visitFormalParameter(FormalParameter parameterExpr, P p); |
| |
| /** |
| * Visit a {@link LocalVariable}. |
| * |
| * @param localVarExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code localVarExpr} |
| */ |
| protected abstract R visitLocalVariable(LocalVariable localVarExpr, P p); |
| |
| /** |
| * Visit a {@link MethodCall}. |
| * |
| * @param methodCallExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code methodCallExpr} |
| */ |
| protected abstract R visitMethodCall(MethodCall methodCallExpr, P p); |
| |
| /** |
| * Visit a {@link ThisReference}. |
| * |
| * @param thisExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code thisExpr} |
| */ |
| protected abstract R visitThisReference(ThisReference thisExpr, P p); |
| |
| /** |
| * Visit an {@link UnaryOperation}. |
| * |
| * @param unaryOpExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code unaryOpExpr} |
| */ |
| protected abstract R visitUnaryOperation(UnaryOperation unaryOpExpr, P p); |
| |
| /** |
| * Visit an {@link Unknown}. |
| * |
| * @param unknownExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code unknownExpr} |
| */ |
| protected abstract R visitUnknown(Unknown unknownExpr, P p); |
| |
| /** |
| * Visit a {@link ValueLiteral}. |
| * |
| * @param literalExpr the JavaExpression to visit |
| * @param p the parameter to pass to the visit method |
| * @return the result of visiting the {@code literalExpr} |
| */ |
| protected abstract R visitValueLiteral(ValueLiteral literalExpr, P p); |
| } |