summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-10-29 21:38:27 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-11-08 08:20:45 +0100
commitb686a055a095af5da69d51e83fbf602f4db53b2f (patch)
tree2bb4f3079ca3a2b46349063341c775150d1a7e83 /src/compiler/scala/tools/nsc/typechecker/Implicits.scala
parente5ccdb0ebf37d07f764f903d73abcfe1fec5436b (diff)
downloadscala-b686a055a095af5da69d51e83fbf602f4db53b2f.tar.gz
scala-b686a055a095af5da69d51e83fbf602f4db53b2f.tar.bz2
scala-b686a055a095af5da69d51e83fbf602f4db53b2f.zip
Fast path for ByNameClass in isImpossibleSubtype
These show up often due to the way that searches for implicit views operate: firstly `A=>B` is sought, and failing that `(=>A) => B`.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Implicits.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Implicits.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
index 1e89e79cdd..5546e56c0d 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
@@ -564,7 +564,7 @@ trait Implicits {
// side is a class, else we may not know enough.
case tr1 @ TypeRef(_, sym1, _) if sym1.isClass =>
tp2.dealiasWiden match {
- case TypeRef(_, sym2, _) => sym2.isClass && !(sym1 isWeakSubClass sym2)
+ case TypeRef(_, sym2, _) => ((sym1 eq ByNameParamClass) != (sym2 eq ByNameParamClass)) || (sym2.isClass && !(sym1 isWeakSubClass sym2))
case RefinedType(parents, decls) => decls.nonEmpty && tr1.member(decls.head.name) == NoSymbol
case _ => false
}