Skip to content

Commit

Permalink
SI-6966 Fix regression in implicit resolution
Browse files Browse the repository at this point in the history
Reverts this line: 9c09c17#L50L671. That value was
apparantly discarded intentionally.
  • Loading branch information
retronym committed Jan 12, 2013
1 parent a2a37ed commit 58bfa19
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/compiler/scala/tools/nsc/typechecker/Implicits.scala
Expand Up @@ -668,7 +668,11 @@ trait Implicits {
// duplicating the code here, but this is probably a
// hotspot (and you can't just call typed, need to force
// re-typecheck)
val checked = itree2 match {
//
// This is just called for the side effect of error detection,
// see SI-6966 to see what goes wrong if we use the result of this
// as the SearchResult.
itree2 match {
case TypeApply(fun, args) => typedTypeApply(itree2, EXPRmode, fun, args)
case Apply(TypeApply(fun, args), _) => typedTypeApply(itree2, EXPRmode, fun, args) // t2421c
case t => t
Expand All @@ -677,7 +681,7 @@ trait Implicits {
if (context.hasErrors)
fail("typing TypeApply reported errors for the implicit tree: " + context.errBuffer.head.errMsg)
else {
val result = new SearchResult(checked, subst)
val result = new SearchResult(itree2, subst)
if (Statistics.canEnable) Statistics.incCounter(foundImplicits)
printInference("[success] found %s for pt %s".format(result, ptInstantiated))
result
Expand Down
17 changes: 17 additions & 0 deletions test/files/pos/t6966.scala
@@ -0,0 +1,17 @@
import Ordering.{Byte, comparatorToOrdering}
trait Format[T]
trait InputCache[T]
object CacheIvy {
implicit def basicInputCache[I](implicit fmt: Format[I], eqv: Equiv[I]): InputCache[I] = null
implicit def arrEquiv[T](implicit t: Equiv[T]): Equiv[Array[T]] = null
implicit def hNilCache: InputCache[HNil] = null
implicit def ByteArrayFormat: Format[Array[Byte]] = null
type :+:[H, T <: HList] = HCons[H,T]
implicit def hConsCache[H, T <: HList](implicit head: InputCache[H], tail: InputCache[T]): InputCache[H :+: T] = null
hConsCache[Array[Byte], HNil]
}

sealed trait HList
sealed trait HNil extends HList
object HNil extends HNil
final class HCons[H, T <: HList](head : H, tail : T) extends HList

0 comments on commit 58bfa19

Please sign in to comment.