Skip to content
This repository
Browse code

SI-7180 Fix regression in implicit scope of HK type alias.

We actually need to call normalize here, otherwise we don't
progress through #1 below.

    [infer implicit] scala.this.Predef.implicitly[Higher[Foo.Bar]] with pt=Higher[Foo.Bar] in object Foo
    1. tp=Foo.Bar tp.normalize=[A <: <?>]Foo.Bar[A] tp.dealias=Foo.Bar
    2. tp=Foo.Bar[A] tp.normalize=Box[A] tp.dealias=Box[A]
  • Loading branch information...
commit de1f74990aa5321a47dd1366a1e283f2ca8a4e6f 1 parent 9a2455a
Jason Zaugg retronym authored
2  src/compiler/scala/tools/nsc/typechecker/Implicits.scala
@@ -1015,7 +1015,7 @@ trait Implicits {
1015 1015 args foreach (getParts(_))
1016 1016 }
1017 1017 } else if (sym.isAliasType) {
1018   - getParts(tp.dealias)
  1018 + getParts(tp.normalize) // SI-7180 Normalize needed to expand HK type refs
1019 1019 } else if (sym.isAbstractType) {
1020 1020 getParts(tp.bounds.hi)
1021 1021 }
13 test/files/pos/t7180.scala
... ... @@ -0,0 +1,13 @@
  1 +trait Higher[F[_]]
  2 +
  3 +trait Box[A]
  4 +object Box {
  5 + implicit def HigherBox = new Higher[Box] {}
  6 +}
  7 +
  8 +object Foo {
  9 + val box = implicitly[Higher[Box]] // compiles fine !!!
  10 +
  11 + type Bar[A] = Box[A]
  12 + val bar = implicitly[Higher[Bar]] // <-- this doesn't compile in 2.10.1-RC1, but does in 2.10.0 !!!
  13 +}

0 comments on commit de1f749

Please sign in to comment.
Something went wrong with that request. Please try again.