diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-10-29 21:38:27 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-11-08 08:20:45 +0100 |
commit | b686a055a095af5da69d51e83fbf602f4db53b2f (patch) | |
tree | 2bb4f3079ca3a2b46349063341c775150d1a7e83 | |
parent | e5ccdb0ebf37d07f764f903d73abcfe1fec5436b (diff) | |
download | scala-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`.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Implicits.scala | 2 |
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 } |