final object TypeApplications

Members

final object AppliedType

Extractor for type application T[U_1, ..., U_n]. This is the refined type

T { type p_1 v_1= U_1; ...; type p_n v_n= U_n }

where v_i, p_i are the variances...

final object EtaExpansion

Extractor for

[v1 X1: B1, ..., vn Xn: Bn] -> C[X1, ..., Xn]

where v1, ..., vn and B1, ..., Bn are the variances and bounds of the type parameters of the clas...

class Reducer

A type map that tries to reduce (part of) the result type of the type lambda tycon with the given args(some of which are wildcard arguments represented...

      { type A >: L <: U }
    

        { type A >: L <: U }
      

      val boundsToHi :

      If tp is a TypeBounds instance return its upper bound else return tp

      val boundsToLo :

      If tp is a TypeBounds instance return its lower bound else return tp

      val noBounds :

      Assert type is not a TypeBounds instance and return it unchanged

      def EtaExpandIfHK ( tparams: List [ TypeParamInfo ] , args: List [ Type ] ) ( implicit ctx: Context ) : List

      Adapt all arguments to possible higher-kinded type parameters using etaExpandIfHK

      def varianceConforms ( v1: Int , v2: Int ) : Boolean

      Does variance v1 conform to variance v2? This is the case if the variances are the same or sym is nonvariant.

      def varianceConforms ( tparam1: TypeParamInfo , tparam2: TypeParamInfo ) ( implicit ctx: Context ) : Boolean

      Does the variance of type parameter tparam1 conform to the variance of type parameter tparam2?

      def variancesConform ( tparams1: List [ TypeParamInfo ] , tparams2: List [ TypeParamInfo ] ) ( implicit ctx: Context ) : Boolean

      Do the variances of type parameters tparams1 conform to the variances of corresponding type parameters tparams2? This is only the case of tparams1 and t...