Class FieldAccess
java.lang.Object
org.checkerframework.dataflow.expression.JavaExpression
org.checkerframework.dataflow.expression.FieldAccess
A FieldAccess represents a field access. It does not represent a class literal such as
SomeClass.class
or int[].class
.-
Field Summary
Modifier and TypeFieldDescriptionprotected final VariableElement
The field being accessed.protected final JavaExpression
The receiver of the field access.Fields inherited from class org.checkerframework.dataflow.expression.JavaExpression
type
-
Constructor Summary
ConstructorDescriptionFieldAccess
(JavaExpression receiver, VariableElement fieldElement) Create aFieldAccess
.FieldAccess
(JavaExpression receiver, TypeMirror type, VariableElement fieldElement) Create aFieldAccess
.FieldAccess
(JavaExpression receiver, FieldAccessNode node) Create aFieldAccess
. -
Method Summary
Modifier and TypeMethodDescription<R,
P> R accept
(JavaExpressionVisitor<R, P> visitor, P p) Accept method of the visitor pattern.boolean
containsModifiableAliasOf
(Store<?> store, JavaExpression other) Returns true if and only ifother
appears anywhere in this or an expression appears in this such thatother
might alias this expression, and that expression is modifiable.boolean
containsOfClass
(Class<? extends JavaExpression> clazz) boolean
Returns true if and only if this contains a JavaExpression that is syntactically equal toother
.boolean
getField()
Returns the field.Returns the receiver.int
hashCode()
boolean
isDeterministic
(AnnotationProvider provider) Returns true if the expression is deterministic.boolean
isFinal()
boolean
isStatic()
boolean
Returns true if and only if the value this expression stands for cannot be changed (with respect to ==) by a method call.boolean
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.boolean
Returns true if and only if the two Java expressions are syntactically identical.toString()
Format this verbosely, for debugging.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
-
Field Details
-
receiver
The receiver of the field access. -
field
The field being accessed.
-
-
Constructor Details
-
FieldAccess
Create aFieldAccess
.- Parameters:
receiver
- receiver of the field accessnode
- FieldAccessNode
-
FieldAccess
Create aFieldAccess
.- Parameters:
receiver
- receiver of the field accessfieldElement
- element of the field
-
FieldAccess
Create aFieldAccess
.- Parameters:
receiver
- receiver of the field accesstype
- type of the fieldfieldElement
- element of the field
-
-
Method Details
-
getReceiver
Returns the receiver.- Returns:
- the receiver
-
getField
Returns the field.- Returns:
- the field
-
isFinal
public boolean isFinal() -
isStatic
public boolean isStatic() -
equals
-
hashCode
public int hashCode() -
syntacticEquals
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 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
Description copied from class:JavaExpression
Returns true if and only if this contains a JavaExpression that is syntactically equal toother
.- Specified by:
containsSyntacticEqualJavaExpression
in 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
Description copied from class:JavaExpression
Returns true if and only ifother
appears anywhere in this or an expression appears in this such thatother
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 classJavaExpression
-
toString
-
toStringDebug
Description copied from class:JavaExpression
Format this verbosely, for debugging.- Overrides:
toStringDebug
in classJavaExpression
- Returns:
- a verbose string representation of this
-
containsOfClass
- Specified by:
containsOfClass
in classJavaExpression
-
isDeterministic
Description copied from class:JavaExpression
Returns true if the expression is deterministic.- Specified by:
isDeterministic
in classJavaExpression
- Parameters:
provider
- an annotation provider (a type factory)- Returns:
- true if this expression is deterministic
-
isUnassignableByOtherCode
public boolean isUnassignableByOtherCode()Description copied from class:JavaExpression
Returns 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:
isUnassignableByOtherCode
in classJavaExpression
- See Also:
-
isUnmodifiableByOtherCode
public boolean isUnmodifiableByOtherCode()Description copied from class:JavaExpression
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.Approximately, this returns true if the expression is
JavaExpression.isUnassignableByOtherCode()
and its type is immutable.- Specified by:
isUnmodifiableByOtherCode
in classJavaExpression
- See Also:
-
accept
Description copied from class:JavaExpression
Accept method of the visitor pattern.- Specified by:
accept
in 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
-