Class BinaryOperation

java.lang.Object
org.checkerframework.dataflow.expression.JavaExpression
org.checkerframework.dataflow.expression.BinaryOperation

public class BinaryOperation extends JavaExpression
JavaExpression for binary operations.
  • Field Details

    • operationKind

      protected final Tree.Kind operationKind
      The binary operation kind.
    • left

      protected final JavaExpression left
      The left operand.
  • Constructor Details

    • BinaryOperation

      public BinaryOperation(TypeMirror type, Tree.Kind operationKind, JavaExpression left, JavaExpression right)
      Create a binary operation.
      Parameters:
      type - the result type
      operationKind - the operator
      left - the left operand
      right - the right operand
    • BinaryOperation

      public BinaryOperation(BinaryOperationNode node, JavaExpression left, JavaExpression right)
      Create a binary operation.
      Parameters:
      node - the binary operation node
      left - the left operand
      right - the right operand
  • Method Details

    • getOperationKind

      public Tree.Kind getOperationKind()
      Returns the operator of this binary operation.
      Returns:
      the binary operation kind
    • getLeft

      public JavaExpression getLeft()
      Returns the left operand of this binary operation.
      Returns:
      the left operand
    • getRight

      public JavaExpression getRight()
      Returns the right operand of this binary operation.
      Returns:
      the right operand
    • containedOfClass

      public <T extends JavaExpression> @Nullable T containedOfClass(Class<T> clazz)
      Description copied from class: JavaExpression
      Returns the first subexpression whose class is the given class, or null.

      This is intended as a diagnostic aid; most clients will use JavaExpression.containsOfClass(java.lang.Class<? extends org.checkerframework.dataflow.expression.JavaExpression>).

      Specified by:
      containedOfClass in class JavaExpression
      Type Parameters:
      T - the type corresponding to clazz
      Parameters:
      clazz - the JavaExpression subclass to search for
      Returns:
      true if some subexpression whose class is the given class
    • isDeterministic

      public boolean isDeterministic(org.checkerframework.javacutil.AnnotationProvider provider)
      Description copied from class: JavaExpression
      Returns true if the expression is deterministic.
      Specified by:
      isDeterministic in class JavaExpression
      Parameters:
      provider - an annotation provider (a type factory)
      Returns:
      true if this expression is deterministic
    • isAssignableByOtherCode

      public boolean isAssignableByOtherCode()
      Description copied from class: JavaExpression
      Returns true if some subexpression of this can be assigned to from outside the current method body.

      This is false for local variables, the self reference, final field accesses whose receiver is JavaExpression.isUnassignableByOtherCode(), and operations whose operands are all not JavaExpression.isModifiableByOtherCode().

      Overrides:
      isAssignableByOtherCode in class JavaExpression
      Returns:
      true if some subexpression of this can be assigned to from outside the current method body
      See Also:
    • isModifiableByOtherCode

      public boolean isModifiableByOtherCode()
      Description copied from class: JavaExpression
      Returns true if the value this expression stands for can be changed by a method call; equivalently, if the value this expression evaluates to can be changed by a side effect from outside the containing method.

      Approximately, this returns true if the expression is JavaExpression.isAssignableByOtherCode() or its type is mutable. (String is an immutable type.)

      Overrides:
      isModifiableByOtherCode in class JavaExpression
      Returns:
      true if the value of this expression can be changed from outside the current method body
      See Also:
    • syntacticEquals

      public boolean syntacticEquals(JavaExpression je)
      Description copied from class: JavaExpression
      Returns true if and only if the two Java expressions are syntactically identical.

      This exists for use by JavaExpression.containsSyntacticEqualJavaExpression(org.checkerframework.dataflow.expression.JavaExpression).

      Specified by:
      syntacticEquals in class JavaExpression
      Parameters:
      je - the other Java expression to compare to this one
      Returns:
      true if and only if the two Java expressions are syntactically identical
    • containsSyntacticEqualJavaExpression

      public boolean containsSyntacticEqualJavaExpression(JavaExpression other)
      Description copied from class: JavaExpression
      Returns true if and only if this contains a JavaExpression that is syntactically equal to other.
      Specified by:
      containsSyntacticEqualJavaExpression in class JavaExpression
      Parameters:
      other - the JavaExpression to search for
      Returns:
      true if and only if this contains a JavaExpression that is syntactically equal to other
    • containsModifiableAliasOf

      public boolean containsModifiableAliasOf(Store<?> store, JavaExpression other)
      Description copied from class: JavaExpression
      Returns true if and only if other appears anywhere in this or an expression appears in this such that other might alias this expression, and that expression is modifiable.

      This is always true, except for cases where the Java type information prevents aliasing and none of the subexpressions can alias 'other'.

      Overrides:
      containsModifiableAliasOf in class JavaExpression
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(@Nullable Object other)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • accept

      public <R, P> R accept(JavaExpressionVisitor<R,P> visitor, P p)
      Description copied from class: JavaExpression
      Accept method of the visitor pattern.
      Specified by:
      accept in class JavaExpression
      Type Parameters:
      R - result type of the operation
      P - parameter type
      Parameters:
      visitor - the visitor to be applied to this JavaExpression
      p - the parameter for this operation
      Returns:
      the result of visiting this