summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorDominik Gruntz <dominik.gruntz@fhnw.ch>2012-07-17 17:57:24 +0200
committerDominik Gruntz <dominik.gruntz@fhnw.ch>2012-07-17 17:57:24 +0200
commit1aba3d2038b6b13496163842a94201fe51f85217 (patch)
treea50b832368233ec786cdbe451c7bf3ed68859463 /src/reflect
parent4aeaf9015befc4f16a962896daa7deda99e11605 (diff)
downloadscala-1aba3d2038b6b13496163842a94201fe51f85217.tar.gz
scala-1aba3d2038b6b13496163842a94201fe51f85217.tar.bz2
scala-1aba3d2038b6b13496163842a94201fe51f85217.zip
uses weak_<:< from Types to solve this issue
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala16
1 files changed, 3 insertions, 13 deletions
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index 47e84b4918..5c86afc8da 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -93,16 +93,6 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
// Begin Correlation Helpers
- def weaklyConforms(a: Type, f: Type): Boolean = (a =:= f) || {
- if(a =:= typeOf[Byte]) weaklyConforms(typeOf[Short], f)
- else if(a =:= typeOf[Short]) weaklyConforms(typeOf[Int], f)
- else if(a =:= typeOf[Char]) weaklyConforms(typeOf[Int], f)
- else if(a =:= typeOf[Int]) weaklyConforms(typeOf[Long], f)
- else if(a =:= typeOf[Long]) weaklyConforms(typeOf[Float], f)
- else if(a =:= typeOf[Float]) weaklyConforms(typeOf[Double], f)
- else false
- }
-
def isCompatible(tp: Type, pt: Type): Boolean = {
def isCompatibleByName(tp: Type, pt: Type): Boolean = pt match {
case TypeRef(_, ByNameParamClass, List(res)) if !definitions.isByNameParamType(tp) =>
@@ -110,13 +100,13 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
case _ =>
false
}
- (tp <:< pt) || weaklyConforms(tp, pt) || isCompatibleByName(tp, pt)
+ (tp weak_<:< pt) || isCompatibleByName(tp, pt)
}
def signatureAsSpecific(method1: MethodSymbol, method2: MethodSymbol): Boolean = {
(substituteTypeParams(method1), substituteTypeParams(method2)) match {
case (NullaryMethodType(r1), NullaryMethodType(r2)) =>
- r1 <:< r2 || weaklyConforms(r1, r2)
+ r1 weak_<:< r2
case (NullaryMethodType(_), MethodType(_, _)) =>
true
case (MethodType(_, _), NullaryMethodType(_)) =>
@@ -308,7 +298,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
else {
val a = argTypes
val p = extend(paramTypes, argTypes.length)
- (a corresponds p)((a, f) => a <:< f || weaklyConforms(a, f))
+ (a corresponds p)(_ weak_<:< _)
}
}
}