Class FunctionToInterfaceCoercer

java.lang.Object
gw.lang.parser.coercers.BaseCoercer
gw.lang.parser.coercers.FunctionToInterfaceCoercer
All Implemented Interfaces:
ICoercer, IResolvingCoercer

public class FunctionToInterfaceCoercer extends BaseCoercer implements IResolvingCoercer
  • Field Details

  • Constructor Details

    • FunctionToInterfaceCoercer

      private FunctionToInterfaceCoercer()
  • Method Details

    • instance

      public static FunctionToInterfaceCoercer instance()
    • coerceValue

      public Object coerceValue(IType typeToCoerceTo, Object value)
      Specified by:
      coerceValue in interface ICoercer
    • getRepresentativeFunctionType

      public static IFunctionType getRepresentativeFunctionType(IType interfaceType)
    • getSingleMethod

      public static IMethodInfo getSingleMethod(IType interfaceType)
    • getSingleMethodFromJavaInterface

      public static IJavaClassMethod getSingleMethodFromJavaInterface(IJavaType interfaceType)
    • getSingleMethodFromJavaInterface

      public static IJavaClassMethod getSingleMethodFromJavaInterface(IJavaClassInfo interfaceType)
    • hasMethod

      private static boolean hasMethod(IJavaClassInfo jci, String name, IJavaClassInfo[] params)
    • isExplicitCoercion

      public boolean isExplicitCoercion()
      Specified by:
      isExplicitCoercion in interface ICoercer
    • handlesNull

      public boolean handlesNull()
      Specified by:
      handlesNull in interface ICoercer
      Returns:
      true if this coercer knows how to handle the null value.
    • getPriority

      public int getPriority(IType to, IType from)
      Specified by:
      getPriority in interface ICoercer
      Returns:
      a value between 0 and MAX_PRIORITY, inclusive that indicates the priority of this coercer when resolving overloaded methods. Typically a coercer should return 0, but coercers that have a high affinity between the target and coerced type, such as primitives, can have higher priorities.
    • resolveType

      public IType resolveType(IType target, IType source)
      Description copied from interface: IResolvingCoercer

      This method should produce a more appropriately parameterized type for the given target type for this coercion. This allows a coercion to communicate type information through the coercion process. An example is the MetaType-to-Class coercion. MetaType should be interpreted as Class from a type inference perspective, so this give the coercer a chance to let the compiler know so.

      If no more appropriate inference type exists, this method should return the source type.

      Specified by:
      resolveType in interface IResolvingCoercer
      Parameters:
      target - type
      Returns:
      a possibly more appropriately parameterized type or the source type if not
    • extractReturnTypeFromInterface

      private IType extractReturnTypeFromInterface(IType target)