Class ReflectiveEvaluator
java.lang.Object
org.checkerframework.common.value.ReflectiveEvaluator
Evaluates expressions (such as method calls and field accesses) at compile time, to determine
whether they have compile-time constant values.
-
Constructor Summary
ConstructorDescriptionReflectiveEvaluator
(BaseTypeChecker checker, ValueAnnotatedTypeFactory factory, boolean reportWarnings) Create a new ReflectiveEvaluator. -
Method Summary
Modifier and TypeMethodDescriptionList<?>
evaluateMethodCall
(List<List<?>> allArgValues, List<?> receiverValues, MethodInvocationTree tree) Returns all possible values that the method may return, or null if the method could not be evaluated.evaluateStaticFieldAccess
(@ClassGetName String classname, String fieldName, ExpressionTree tree) Return the value of a static field access.List<?>
evaluteConstructorCall
(ArrayList<List<?>> argValues, NewClassTree tree, TypeMirror typeToCreate)
-
Constructor Details
-
ReflectiveEvaluator
public ReflectiveEvaluator(BaseTypeChecker checker, ValueAnnotatedTypeFactory factory, boolean reportWarnings) Create a new ReflectiveEvaluator.- Parameters:
checker
- the BaseTypeCheckerfactory
- the annotated type factoryreportWarnings
- if true, report warnings about problems with evaluation
-
-
Method Details
-
evaluateMethodCall
public List<?> evaluateMethodCall(List<List<?>> allArgValues, List<?> receiverValues, MethodInvocationTree tree) Returns all possible values that the method may return, or null if the method could not be evaluated.- Parameters:
allArgValues
- a list of lists where the first list corresponds to all possible values for the first argument. Pass null to indicate that the method has no arguments.receiverValues
- a list of possible receiver values. null indicates that the method has no receiver.tree
- location to report any errors- Returns:
- all possible values that the method may return, or null if the method could not be evaluated
-
evaluateStaticFieldAccess
public Object evaluateStaticFieldAccess(@ClassGetName String classname, String fieldName, ExpressionTree tree) Return the value of a static field access. Return null if accessing the field reflectively fails.- Parameters:
classname
- the class containing the fieldfieldName
- the name of the fieldtree
- the static field access in the program. It is a MemberSelectTree or an IdentifierTree and is used for diagnostics.- Returns:
- the value of the static field access, or null if it cannot be determined
-
evaluteConstructorCall
public List<?> evaluteConstructorCall(ArrayList<List<?>> argValues, NewClassTree tree, TypeMirror typeToCreate)
-