From 451cab967a332773c2027ada7553d5d59c0dc4b1 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Fri, 8 Feb 2013 23:53:18 +0100 Subject: SI-6225 Fix import of inherited package object implicits The prefix in the ImplicitInfo must be com.acme.`package`.type, rather than com.acme. --- .../scala/tools/nsc/typechecker/Contexts.scala | 9 ++++++++- test/files/pos/t6225.scala | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test/files/pos/t6225.scala diff --git a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala index 620665126e..f2a2ef4d61 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala @@ -644,7 +644,14 @@ trait Contexts { self: Analyzer => new ImplicitInfo(sym.name, pre, sym) private def collectImplicitImports(imp: ImportInfo): List[ImplicitInfo] = { - val pre = imp.qual.tpe + val qual = imp.qual + + val pre = + if (qual.tpe.typeSymbol.isPackageClass) + // SI-6225 important if the imported symbol is inherited by the the package object. + singleType(qual.tpe, qual.tpe member nme.PACKAGE) + else + qual.tpe def collect(sels: List[ImportSelector]): List[ImplicitInfo] = sels match { case List() => List() diff --git a/test/files/pos/t6225.scala b/test/files/pos/t6225.scala new file mode 100644 index 0000000000..d3d30d9e16 --- /dev/null +++ b/test/files/pos/t6225.scala @@ -0,0 +1,20 @@ + +package library.x { + class X { + class Foo + implicit val foo: Foo = new Foo + } +} +package library { + package object y extends library.x.X +} + +object ko { + import library.y.{Foo, foo} + implicitly[Foo] +} + +object ko2 { + import library.y._ + implicitly[Foo] +} -- cgit v1.2.3