From 652abbacf7b913ef87474df4bcce4fe90aec24a1 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 19 Jun 2013 21:34:51 +0200 Subject: SI-7596 Curtail overloaded symbols during unpickling In code like: object O { val x = A; def x(a: Any) = ... } object P extends O.x.A The unpickler was using an overloaded symbol for `x` in the parent type of `P`. This led to compilation failures under separate compilation. The code that leads to this is in `Unpicklers`: def fromName(name: Name) = name.toTermName match { case nme.ROOT => loadingMirror.RootClass case nme.ROOTPKG => loadingMirror.RootPackage case _ => adjust(owner.info.decl(name)) } This commit filters the overloaded symbol based its stability unpickling a singleton type. That seemed a slightly safer place than in `fromName`. --- test/files/pos/t7596b/A.scala | 10 ++++++++++ test/files/pos/t7596b/B.scala | 6 ++++++ 2 files changed, 16 insertions(+) create mode 100644 test/files/pos/t7596b/A.scala create mode 100644 test/files/pos/t7596b/B.scala (limited to 'test/files/pos/t7596b') diff --git a/test/files/pos/t7596b/A.scala b/test/files/pos/t7596b/A.scala new file mode 100644 index 0000000000..65c1bc56ef --- /dev/null +++ b/test/files/pos/t7596b/A.scala @@ -0,0 +1,10 @@ +trait H2Driver{ + abstract class Table[T] +} + +object Config { + val driver : H2Driver = ??? + def driver(app: Any): H2Driver = ??? +} + +class Sites extends Config.driver.Table[String] diff --git a/test/files/pos/t7596b/B.scala b/test/files/pos/t7596b/B.scala new file mode 100644 index 0000000000..cbcf149c23 --- /dev/null +++ b/test/files/pos/t7596b/B.scala @@ -0,0 +1,6 @@ +class DAOBase[E]{ + type TableType <: Config.driver.Table[E] +} +class SitesDAO extends DAOBase[String]{ + type TableType = Sites +} -- cgit v1.2.3