aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/node/NodeVisitor.java
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/node/NodeVisitor.java')
-rw-r--r--third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/node/NodeVisitor.java163
1 files changed, 163 insertions, 0 deletions
diff --git a/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/node/NodeVisitor.java b/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/node/NodeVisitor.java
new file mode 100644
index 0000000000..69cb61db6f
--- /dev/null
+++ b/third_party/checker_framework_dataflow/java/org/checkerframework/dataflow/cfg/node/NodeVisitor.java
@@ -0,0 +1,163 @@
+package org.checkerframework.dataflow.cfg.node;
+
+/**
+ * A visitor for a {@link Node} tree.
+ *
+ * @author Stefan Heule
+ *
+ * @param <R>
+ * Return type of the visitor. Use {@link Void} if the visitor does
+ * not have a return value.
+ * @param <P>
+ * Parameter type of the visitor. Use {@link Void} if the visitor
+ * does not have a parameter.
+ */
+public interface NodeVisitor<R, P> {
+ // Literals
+ R visitShortLiteral(ShortLiteralNode n, P p);
+
+ R visitIntegerLiteral(IntegerLiteralNode n, P p);
+
+ R visitLongLiteral(LongLiteralNode n, P p);
+
+ R visitFloatLiteral(FloatLiteralNode n, P p);
+
+ R visitDoubleLiteral(DoubleLiteralNode n, P p);
+
+ R visitBooleanLiteral(BooleanLiteralNode n, P p);
+
+ R visitCharacterLiteral(CharacterLiteralNode n, P p);
+
+ R visitStringLiteral(StringLiteralNode n, P p);
+
+ R visitNullLiteral(NullLiteralNode n, P p);
+
+ // Unary operations
+ R visitNumericalMinus(NumericalMinusNode n, P p);
+
+ R visitNumericalPlus(NumericalPlusNode n, P p);
+
+ R visitBitwiseComplement(BitwiseComplementNode n, P p);
+
+ R visitNullChk(NullChkNode n, P p);
+
+ // Binary operations
+ R visitStringConcatenate(StringConcatenateNode n, P p);
+
+ R visitNumericalAddition(NumericalAdditionNode n, P p);
+
+ R visitNumericalSubtraction(NumericalSubtractionNode n, P p);
+
+ R visitNumericalMultiplication(NumericalMultiplicationNode n, P p);
+
+ R visitIntegerDivision(IntegerDivisionNode n, P p);
+
+ R visitFloatingDivision(FloatingDivisionNode n, P p);
+
+ R visitIntegerRemainder(IntegerRemainderNode n, P p);
+
+ R visitFloatingRemainder(FloatingRemainderNode n, P p);
+
+ R visitLeftShift(LeftShiftNode n, P p);
+
+ R visitSignedRightShift(SignedRightShiftNode n, P p);
+
+ R visitUnsignedRightShift(UnsignedRightShiftNode n, P p);
+
+ R visitBitwiseAnd(BitwiseAndNode n, P p);
+
+ R visitBitwiseOr(BitwiseOrNode n, P p);
+
+ R visitBitwiseXor(BitwiseXorNode n, P p);
+
+ // Compound assignments
+ R visitStringConcatenateAssignment(StringConcatenateAssignmentNode n, P p);
+
+ // Comparison operations
+ R visitLessThan(LessThanNode n, P p);
+
+ R visitLessThanOrEqual(LessThanOrEqualNode n, P p);
+
+ R visitGreaterThan(GreaterThanNode n, P p);
+
+ R visitGreaterThanOrEqual(GreaterThanOrEqualNode n, P p);
+
+ R visitEqualTo(EqualToNode n, P p);
+
+ R visitNotEqual(NotEqualNode n, P p);
+
+ // Conditional operations
+ R visitConditionalAnd(ConditionalAndNode n, P p);
+
+ R visitConditionalOr(ConditionalOrNode n, P p);
+
+ R visitConditionalNot(ConditionalNotNode n, P p);
+
+ R visitTernaryExpression(TernaryExpressionNode n, P p);
+
+ R visitAssignment(AssignmentNode n, P p);
+
+ R visitLocalVariable(LocalVariableNode n, P p);
+
+ R visitVariableDeclaration(VariableDeclarationNode n, P p);
+
+ R visitFieldAccess(FieldAccessNode n, P p);
+
+ R visitMethodAccess(MethodAccessNode n, P p);
+
+ R visitArrayAccess(ArrayAccessNode n, P p);
+
+ R visitImplicitThisLiteral(ImplicitThisLiteralNode n, P p);
+
+ R visitExplicitThisLiteral(ExplicitThisLiteralNode n, P p);
+
+ R visitSuper(SuperNode n, P p);
+
+ R visitReturn(ReturnNode n, P p);
+
+ R visitStringConversion(StringConversionNode n, P p);
+
+ R visitNarrowingConversion(NarrowingConversionNode n, P p);
+
+ R visitWideningConversion(WideningConversionNode n, P p);
+
+ R visitInstanceOf(InstanceOfNode n, P p);
+
+ R visitTypeCast(TypeCastNode n, P p);
+
+ // Blocks
+
+ R visitSynchronized(SynchronizedNode n, P p);
+
+ // Statements
+ R visitAssertionError(AssertionErrorNode n, P p);
+
+ R visitThrow(ThrowNode n, P p);
+
+ // Cases
+ R visitCase(CaseNode n, P p);
+
+ // Method and constructor invocations
+ R visitMethodInvocation(MethodInvocationNode n, P p);
+
+ R visitObjectCreation(ObjectCreationNode n, P p);
+
+ R visitMemberReference(FunctionalInterfaceNode n, P p);
+
+ R visitArrayCreation(ArrayCreationNode n, P p);
+
+ // Type, package and class names
+ R visitArrayType(ArrayTypeNode n, P p);
+
+ R visitPrimitiveType(PrimitiveTypeNode n, P p);
+
+ R visitClassName(ClassNameNode n, P p);
+
+ R visitPackageName(PackageNameNode n, P p);
+
+ // Parameterized types
+ R visitParameterizedType(ParameterizedTypeNode n, P p);
+
+ // Marker nodes
+ R visitMarker(MarkerNode n, P p);
+}