summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-02-11 11:11:00 -0800
committerJames Iry <jamesiry@gmail.com>2013-02-11 11:11:00 -0800
commit08e547ffd2214c696cffec10ac721051bba98fca (patch)
tree66d816b71e1b5cc62d0e13d9e627fe733ae92027
parent8bf9bbf557c2ce0778327f82e4599ddea97a3da8 (diff)
parent451cab967a332773c2027ada7553d5d59c0dc4b1 (diff)
downloadscala-08e547ffd2214c696cffec10ac721051bba98fca.tar.gz
scala-08e547ffd2214c696cffec10ac721051bba98fca.tar.bz2
scala-08e547ffd2214c696cffec10ac721051bba98fca.zip
Merge pull request #2098 from retronym/ticket/6225
SI-6225 Fix import of inherited package object implicits
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Contexts.scala9
-rw-r--r--test/files/pos/t6225.scala20
2 files changed, 28 insertions, 1 deletions
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]
+}