summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-05-17 16:35:20 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-05-17 16:35:20 -0700
commita23c7e295e0c36998ef84ca5247fc5a948d29af9 (patch)
tree634f8e7c5118bd44147cd034d761f7cfe11f43c4 /src/compiler
parent16ca3899d1a99e52952a395480e8a8f5960d14d5 (diff)
parentf81a4f92967a2dd69784864e9ab9e1624d7db35b (diff)
downloadscala-a23c7e295e0c36998ef84ca5247fc5a948d29af9.tar.gz
scala-a23c7e295e0c36998ef84ca5247fc5a948d29af9.tar.bz2
scala-a23c7e295e0c36998ef84ca5247fc5a948d29af9.zip
Merge 2.10.x into master
Conflicts: src/compiler/scala/tools/nsc/typechecker/Implicits.scala src/reflect/scala/reflect/runtime/JavaMirrors.scala
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Implicits.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
index 4acda12dc0..37257b4f4e 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Implicits.scala
@@ -929,11 +929,15 @@ trait Implicits {
*/
if (DivergentImplicitRecovery.sym != null) {
DivergingImplicitExpansionError(tree, pt, DivergentImplicitRecovery.sym)(context)
- } else invalidImplicits take 1 foreach { sym =>
- def isSensibleAddendum = pt match {
+ }
+ else if (invalidImplicits.nonEmpty) {
+ val sym = invalidImplicits.head
+ // We don't even dare look if errors are being buffered
+ // !sym.hasFlag(LOCKED) is a hail mary between SI-2206 and SI-7486
+ def isSensibleAddendum = !sym.hasFlag(LOCKED) && (pt match {
case Function1(_, out) => out <:< sym.tpe.finalResultType
case _ => pt <:< sym.tpe.finalResultType
- }
+ })
// Don't pitch in with this theory unless it looks plausible that the
// implicit would have helped
setAddendum(pos, () =>