@@ -984,28 +984,39 @@ class Definitions {
984
984
isNonDepFunctionType(tp.dropDependentRefinement)
985
985
986
986
// Specialized type parameters defined for scala.Function{0,1,2}.
987
- private lazy val Function1SpecializedParams : collection.Set [Type ] =
987
+ lazy val Function1SpecializedParamTypes : collection.Set [TypeRef ] =
988
988
Set (IntType , LongType , FloatType , DoubleType )
989
- private lazy val Function2SpecializedParams : collection.Set [Type ] =
989
+ lazy val Function2SpecializedParamTypes : collection.Set [TypeRef ] =
990
990
Set (IntType , LongType , DoubleType )
991
- private lazy val Function0SpecializedReturns : collection.Set [Type ] =
992
- ScalaNumericValueTypeList .toSet[ Type ] + UnitType + BooleanType
993
- private lazy val Function1SpecializedReturns : collection.Set [Type ] =
991
+ lazy val Function0SpecializedReturnTypes : collection.Set [TypeRef ] =
992
+ ScalaNumericValueTypeList .toSet + UnitType + BooleanType
993
+ lazy val Function1SpecializedReturnTypes : collection.Set [TypeRef ] =
994
994
Set (UnitType , BooleanType , IntType , FloatType , LongType , DoubleType )
995
- private lazy val Function2SpecializedReturns : collection.Set [Type ] =
996
- Function1SpecializedReturns
995
+ lazy val Function2SpecializedReturnTypes : collection.Set [TypeRef ] =
996
+ Function1SpecializedReturnTypes
997
+
998
+ lazy val Function1SpecializedParamClasses =
999
+ new PerRun [collection.Set [Symbol ]](implicit ctx => Function1SpecializedParamTypes .map(_.symbol))
1000
+ lazy val Function2SpecializedParamClasses =
1001
+ new PerRun [collection.Set [Symbol ]](implicit ctx => Function2SpecializedParamTypes .map(_.symbol))
1002
+ lazy val Function0SpecializedReturnClasses =
1003
+ new PerRun [collection.Set [Symbol ]](implicit ctx => Function0SpecializedReturnTypes .map(_.symbol))
1004
+ lazy val Function1SpecializedReturnClasses =
1005
+ new PerRun [collection.Set [Symbol ]](implicit ctx => Function1SpecializedReturnTypes .map(_.symbol))
1006
+ lazy val Function2SpecializedReturnClasses =
1007
+ new PerRun [collection.Set [Symbol ]](implicit ctx => Function2SpecializedReturnTypes .map(_.symbol))
997
1008
998
1009
def isSpecializableFunction (cls : ClassSymbol , paramTypes : List [Type ], retType : Type )(implicit ctx : Context ) =
999
- isFunctionClass( cls) && (paramTypes match {
1010
+ paramTypes.length <= 2 && cls.derivesFrom( FunctionClass (paramTypes.length) ) && (paramTypes match {
1000
1011
case Nil =>
1001
- Function0SpecializedReturns .contains(retType)
1012
+ Function0SpecializedReturnClasses () .contains(retType.typeSymbol )
1002
1013
case List (paramType0) =>
1003
- Function1SpecializedParams .contains(paramType0) &&
1004
- Function1SpecializedReturns .contains(retType)
1014
+ Function1SpecializedParamClasses () .contains(paramType0.typeSymbol ) &&
1015
+ Function1SpecializedReturnClasses () .contains(retType.typeSymbol )
1005
1016
case List (paramType0, paramType1) =>
1006
- Function2SpecializedParams .contains(paramType0) &&
1007
- Function2SpecializedParams .contains(paramType1) &&
1008
- Function2SpecializedReturns .contains(retType)
1017
+ Function2SpecializedParamClasses () .contains(paramType0.typeSymbol ) &&
1018
+ Function2SpecializedParamClasses () .contains(paramType1.typeSymbol ) &&
1019
+ Function2SpecializedReturnClasses () .contains(retType.typeSymbol )
1009
1020
case _ =>
1010
1021
false
1011
1022
})
0 commit comments