diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-10-30 09:07:28 -0700 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-10-30 09:07:28 -0700 |
commit | c38235fd44f1ccb280e31a2f34f58deb59c5b2ee (patch) | |
tree | 39525d55b60dfa4c9092741c76235ce20e397484 | |
parent | 9b8d108ed7cb1a049e4e8500b6896e9554328aab (diff) | |
parent | 212c55d5bc3e87e3b1940502d55be9c2dcbf9326 (diff) | |
download | scala-c38235fd44f1ccb280e31a2f34f58deb59c5b2ee.tar.gz scala-c38235fd44f1ccb280e31a2f34f58deb59c5b2ee.tar.bz2 scala-c38235fd44f1ccb280e31a2f34f58deb59c5b2ee.zip |
Merge pull request #3084 from retronym/topic/opt
Microoptimization in implicit search
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Implicits.scala | 3 | ||||
-rw-r--r-- | src/reflect/scala/reflect/internal/Types.scala | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala index c19d861d23..987a3d2202 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala @@ -216,7 +216,8 @@ trait Implicits { case NullaryMethodType(restpe) => containsError(restpe) case mt @ MethodType(_, restpe) => - (mt.paramTypes exists typeIsError) || containsError(restpe) + // OPT avoiding calling `mt.paramTypes` which creates a new list. + (mt.params exists symTypeIsError) || containsError(restpe) case _ => tp.isError } diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index 653030e602..e483fa6ba8 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -4547,7 +4547,7 @@ trait Types private[scala] val typeIsNonClassType = (tp: Type) => tp.typeSymbolDirect.isNonClassType private[scala] val typeIsExistentiallyBound = (tp: Type) => tp.typeSymbol.isExistentiallyBound private[scala] val typeIsErroneous = (tp: Type) => tp.isErroneous - private[scala] val typeIsError = (tp: Type) => tp.isError + private[scala] val symTypeIsError = (sym: Symbol) => sym.tpe.isError private[scala] val typeHasAnnotations = (tp: Type) => tp.annotations.nonEmpty private[scala] val boundsContainType = (bounds: TypeBounds, tp: Type) => bounds containsType tp private[scala] val typeListIsEmpty = (ts: List[Type]) => ts.isEmpty |