Class Java8InferenceContext

java.lang.Object
org.checkerframework.framework.util.typeinference8.util.Java8InferenceContext

public class Java8InferenceContext extends Object
An object to pass around for use during invocation type inference. One context is created per top-level invocation expression.
  • Field Details

    • pathToExpression

      public TreePath pathToExpression
      Path to the top level expression whose type arguments are inferred.
    • env

      public final ProcessingEnvironment env
      javax.annotation.processing.ProcessingEnvironment
    • object

      public final ProperType object
      ProperType for java.lang.Object.
    • inference

      public final InvocationTypeInference inference
      Invocation type inference object.
    • types

      public final com.sun.tools.javac.code.Types types
      com.sun.tools.javac.code.Types
    • modelTypes

      public final Types modelTypes
      javax.lang.model.util.Types
    • enclosingType

      public final DeclaredType enclosingType
      The type of class that encloses the top level expression whose type arguments are inferred.
    • maps

      public final Map<ExpressionTree,Theta> maps
      Store previously created type variable to inference variable maps as a map from invocation expression to Theta.
    • runtimeEx

      public final TypeMirror runtimeEx
      TypeMirror for java.lang.RuntimeException.
    • inferenceTypeFactory

      public final InferenceFactory inferenceTypeFactory
      The inference factory.
    • typeFactory

      public final AnnotatedTypeFactory typeFactory
      The annotated type factory.
    • lambdaParms

      public final Set<VariableElement> lambdaParms
      There's no way to tell if an element is a parameter of a lambda, so keep track of them.
  • Constructor Details

    • Java8InferenceContext

      public Java8InferenceContext(AnnotatedTypeFactory factory, TreePath pathToExpression, InvocationTypeInference inference)
      Creates a context
      Parameters:
      factory - type factory
      pathToExpression - path to the expression whose type arguments are inferred
      inference - inference object
  • Method Details

    • getNextVariableId

      public int getNextVariableId()
      Returns the next number to use as the id for a non-capture variable. This id is only unique for this inference problem.
      Returns:
      the next number to use as the id for a non-capture variable
    • getNextCaptureVariableId

      public int getNextCaptureVariableId()
      Return the next number to use as the id for a capture variable. This id is only unique for this inference problem.
      Returns:
      the next number to use as the id for a capture variable
    • getNextQualifierVariableId

      public int getNextQualifierVariableId()
      Returns the next number to use as the id for a qualifier variable. This id is only unique for this inference problem.
      Returns:
      the next number to use as the id for a qualifier variable
    • addLambdaParms

      public void addLambdaParms(List<? extends VariableTree> parameters)
      Adds the parameters to the list of trees that are lambda parameters.

      There's no way to tell if a tree is a parameter of a lambda, so keep track of them.

      Parameters:
      parameters - list of lambda parameters
    • isLambdaParam

      public boolean isLambdaParam(ExpressionTree expression)
      Return whether the expression is a lambda parameter.
      Parameters:
      expression - an expression
      Returns:
      whether the expression is a lambda parameter