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 Summary
Fields Modifier and Type Field Description protected JavaExpressionleftThe left operand.protected com.sun.source.tree.Tree.KindoperationKindThe binary operation kind.protected JavaExpressionrightThe right operand.-
Fields inherited from class org.checkerframework.dataflow.expression.JavaExpression
type
-
-
Constructor Summary
Constructors Constructor Description BinaryOperation(javax.lang.model.type.TypeMirror type, com.sun.source.tree.Tree.Kind operationKind, JavaExpression left, JavaExpression right)Create a binary operation.BinaryOperation(BinaryOperationNode node, JavaExpression left, JavaExpression right)Create a binary operation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <R,P>
Raccept(JavaExpressionVisitor<R,P> visitor, P p)Accept method of the visitor pattern.booleancontainsModifiableAliasOf(Store<?> store, JavaExpression other)Returns true if and only ifotherappears anywhere in this or an expression appears in this such thatothermight alias this expression, and that expression is modifiable.booleancontainsOfClass(java.lang.Class<? extends JavaExpression> clazz)booleancontainsSyntacticEqualJavaExpression(JavaExpression other)Returns true if and only if this contains a JavaExpression that is syntactically equal toother.booleanequals(@Nullable java.lang.Object other)JavaExpressiongetLeft()Returns the left operand of this binary operation.com.sun.source.tree.Tree.KindgetOperationKind()Returns the operator of this binary operation.JavaExpressiongetRight()Returns the right operand of this binary operation.inthashCode()booleanisDeterministic(AnnotationProvider provider)Returns true if the expression is deterministic.booleanisUnassignableByOtherCode()Returns true if and only if the value this expression stands for cannot be changed (with respect to ==) by a method call.booleanisUnmodifiableByOtherCode()Returns true if and only if the value this expression stands for cannot be changed by a method call, including changes to any of its fields.booleansyntacticEquals(JavaExpression je)Returns true if and only if the two Java expressions are syntactically identical.java.lang.StringtoString()-
Methods inherited from class org.checkerframework.dataflow.expression.JavaExpression
atConstructorInvocation, atFieldAccess, atMethodBody, atMethodInvocation, atMethodInvocation, containsUnknown, fromArrayAccess, fromNode, fromNodeFieldAccess, fromTree, fromVariableTree, getFormalParameters, getImplicitReceiver, getParametersAsLocalVariables, getPseudoReceiver, getReceiver, getType, listContainsSyntacticEqualJavaExpression, listIsDeterministic, syntacticEqualsList, toStringDebug
-
-
-
-
Field Detail
-
operationKind
protected final com.sun.source.tree.Tree.Kind operationKind
The binary operation kind.
-
left
protected final JavaExpression left
The left operand.
-
right
protected final JavaExpression right
The right operand.
-
-
Constructor Detail
-
BinaryOperation
public BinaryOperation(javax.lang.model.type.TypeMirror type, com.sun.source.tree.Tree.Kind operationKind, JavaExpression left, JavaExpression right)Create a binary operation.- Parameters:
type- the result typeoperationKind- the operatorleft- the left operandright- the right operand
-
BinaryOperation
public BinaryOperation(BinaryOperationNode node, JavaExpression left, JavaExpression right)
Create a binary operation.- Parameters:
node- the binary operation nodeleft- the left operandright- the right operand
-
-
Method Detail
-
getOperationKind
public com.sun.source.tree.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
-
containsOfClass
public boolean containsOfClass(java.lang.Class<? extends JavaExpression> clazz)
- Specified by:
containsOfClassin classJavaExpression
-
isDeterministic
public boolean isDeterministic(AnnotationProvider provider)
Description copied from class:JavaExpressionReturns true if the expression is deterministic.- Specified by:
isDeterministicin classJavaExpression- Parameters:
provider- an annotation provider (a type factory)- Returns:
- true if this expression is deterministic
-
isUnassignableByOtherCode
public boolean isUnassignableByOtherCode()
Description copied from class:JavaExpressionReturns true if and only if the value this expression stands for cannot be changed (with respect to ==) by a method call. This is the case for local variables, the self reference, final field accesses whose receiver isJavaExpression.isUnassignableByOtherCode(), and operations whose operands are allJavaExpression.isUnmodifiableByOtherCode().- Specified by:
isUnassignableByOtherCodein classJavaExpression- See Also:
JavaExpression.isUnmodifiableByOtherCode()
-
isUnmodifiableByOtherCode
public boolean isUnmodifiableByOtherCode()
Description copied from class:JavaExpressionReturns true if and only if the value this expression stands for cannot be changed by a method call, including changes to any of its fields.Approximately, this returns true if the expression is
JavaExpression.isUnassignableByOtherCode()and its type is immutable.- Specified by:
isUnmodifiableByOtherCodein classJavaExpression- See Also:
JavaExpression.isUnassignableByOtherCode()
-
syntacticEquals
public boolean syntacticEquals(JavaExpression je)
Description copied from class:JavaExpressionReturns 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:
syntacticEqualsin classJavaExpression- 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:JavaExpressionReturns true if and only if this contains a JavaExpression that is syntactically equal toother.- Specified by:
containsSyntacticEqualJavaExpressionin classJavaExpression- 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:JavaExpressionReturns true if and only ifotherappears anywhere in this or an expression appears in this such thatothermight 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:
containsModifiableAliasOfin classJavaExpression
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(@Nullable java.lang.Object other)
- Overrides:
equalsin classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
accept
public <R,P> R accept(JavaExpressionVisitor<R,P> visitor, P p)
Description copied from class:JavaExpressionAccept method of the visitor pattern.- Specified by:
acceptin classJavaExpression- Type Parameters:
R- result type of the operationP- parameter type- Parameters:
visitor- the visitor to be applied to this JavaExpressionp- the parameter for this operation- Returns:
- the result of visiting this
-
-