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 TypeMethodDescriptionevaluateMethodCall
(@Nullable List<List<?>> allArgValues, @Nullable 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.evaluteConstructorCall
(List<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 @Nullable List<?> evaluateMethodCall(@Nullable List<List<?>> allArgValues, @Nullable 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 @Nullable 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 @Nullable List<?> evaluteConstructorCall(List<List<?>> argValues, NewClassTree tree, TypeMirror typeToCreate)
-