java.lang.Object
com.github.javaparser.symbolsolver.resolution.typeinference.TypeHelper

public class TypeHelper extends Object
The term "type" is used loosely in this chapter to include type-like syntax that contains inference variables. Assertions that involve inference variables are assertions about every proper type that can be produced by replacing each inference variable with a proper type.
  • Constructor Details

    • TypeHelper

      public TypeHelper()
  • Method Details

    • isProperType

      public static boolean isProperType(ResolvedType type)
      The term proper type excludes such "types" that mention inference variables.
    • isCompatibleInAStrictInvocationContext

      public static boolean isCompatibleInAStrictInvocationContext(Expression expression, ResolvedType t)
      see https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.3
      Parameters:
      expression -
      t -
      Returns:
    • isCompatibleInALooseInvocationContext

      public static boolean isCompatibleInALooseInvocationContext(TypeSolver typeSolver, Expression expression, ResolvedType t)
      see https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.3
      Parameters:
      expression -
      t -
      Returns:
    • isCompatibleInALooseInvocationContext

      public static boolean isCompatibleInALooseInvocationContext(ResolvedType s, ResolvedType t)
      see https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.3
      Parameters:
      s -
      t -
      Returns:
    • toBoxedType

      public static ResolvedType toBoxedType(ResolvedPrimitiveType primitiveType)
    • toBoxedType

      public static ResolvedType toBoxedType(ResolvedPrimitiveType primitiveType, TypeSolver typeSolver)
    • areCompatibleThroughWideningReferenceConversion

      public static boolean areCompatibleThroughWideningReferenceConversion(ResolvedType s, ResolvedType t)
    • areCompatibleThroughWideningPrimitiveConversion

      public static boolean areCompatibleThroughWideningPrimitiveConversion(ResolvedType s, ResolvedType t)
    • usedInferenceVariables

      public static Set<InferenceVariable> usedInferenceVariables(ResolvedType type)
    • leastUpperBound

      public static ResolvedType leastUpperBound(Set<ResolvedType> types)
      See JLS 4.10.4. Least Upper Bound. The least upper bound, or "lub", of a set of reference types is a shared supertype that is more specific than any other shared supertype (that is, no other shared supertype is a subtype of the least upper bound).
    • groundTargetTypeOfLambda

      public static Pair<ResolvedType,Boolean> groundTargetTypeOfLambda(LambdaExpr lambdaExpr, ResolvedType T, TypeSolver typeSolver)
      See JLS 15.27.3. Type of a Lambda Expression
      Returns:
    • nonWildcardParameterizationOf

      private static ResolvedReferenceType nonWildcardParameterizationOf(ResolvedReferenceType originalType, TypeSolver typeSolver)
      See JLS 9.9
    • getFunctionType

      public static MethodType getFunctionType(ResolvedType type)
    • glb

      public static ResolvedType glb(Set<ResolvedType> types)
      See JLS 5.1.10. Capture Conversion.