diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-12 20:43:17 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-12 20:43:17 -0800 |
commit | ed4ae1d35903736da215c568d530d9fa20b0d60a (patch) | |
tree | 0c3c4563380a51f0a70576bcc4c0c2969066ee30 /src/reflect | |
parent | c0edf768912e07690cf904eabf1acb5b2eefbd5e (diff) | |
parent | f62e280825422c1e64c2427bc5958869662701ca (diff) | |
download | scala-ed4ae1d35903736da215c568d530d9fa20b0d60a.tar.gz scala-ed4ae1d35903736da215c568d530d9fa20b0d60a.tar.bz2 scala-ed4ae1d35903736da215c568d530d9fa20b0d60a.zip |
Merge pull request #3519 from adriaanm/rebase-3483
SI-8244 Fix raw type regression under separate compilation
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Definitions.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala index 78e639fdff..645d6aa4ff 100644 --- a/src/reflect/scala/reflect/internal/Definitions.scala +++ b/src/reflect/scala/reflect/internal/Definitions.scala @@ -898,12 +898,15 @@ trait Definitions extends api.StandardDefinitions { * * C[E1, ..., En] forSome { E1 >: LB1 <: UB1 ... en >: LBn <: UBn }. */ + // TODO Review the way this is used. I see two potential problems: + // 1. `existentialAbstraction` here doesn't create fresh existential type symbols, it just + // uses the class type parameter symbols directly as the list of quantified symbols. + // See SI-8244 for the trouble that this can cause. + // Compare with callers of `typeParamsToExistentials` (used in Java raw type handling) + // 2. Why don't we require a prefix? Could its omission lead to wrong results in CheckabilityChecker? def classExistentialType(clazz: Symbol): Type = existentialAbstraction(clazz.typeParams, clazz.tpe_*) - def unsafeClassExistentialType(clazz: Symbol): Type = - existentialAbstraction(clazz.unsafeTypeParams, clazz.tpe_*) - // members of class scala.Any // TODO these aren't final! They are now overriden in AnyRef/Object. Prior to the fix |