diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-02-04 19:53:35 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-02-04 19:53:35 -0800 |
commit | 6cfac6d4c9e25d97f55ed51e1e775aa09b827b7c (patch) | |
tree | 9b126db871f3bc569be9946b985e8adcbac358d7 | |
parent | 75ca8693f3c8468ab35e8a4cb53d4d4981d7363c (diff) | |
parent | 057417236845b689f29c221037e1d06d2b6e43bb (diff) | |
download | scala-6cfac6d4c9e25d97f55ed51e1e775aa09b827b7c.tar.gz scala-6cfac6d4c9e25d97f55ed51e1e775aa09b827b7c.tar.bz2 scala-6cfac6d4c9e25d97f55ed51e1e775aa09b827b7c.zip |
Merge pull request #2062 from JamesIry/2.10.x_SI-5833
SI-5833 Fixes tail-of-Nil problem in RefinedType#normalizeImpl
-rw-r--r-- | src/reflect/scala/reflect/internal/Types.scala | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index 9d4bdab837..0dd98fb6ae 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -1800,7 +1800,7 @@ trait Types extends api.Types { self: SymbolTable => // TODO see comments around def intersectionType and def merge def flatten(tps: List[Type]): List[Type] = tps flatMap { case RefinedType(parents, ds) if ds.isEmpty => flatten(parents) case tp => List(tp) } val flattened = flatten(parents).distinct - if (decls.isEmpty && flattened.tail.isEmpty) { + if (decls.isEmpty && hasLength(flattened, 1)) { flattened.head } else if (flattened != parents) { refinedType(flattened, if (typeSymbol eq NoSymbol) NoSymbol else typeSymbol.owner, decls, NoPosition) @@ -3542,7 +3542,7 @@ trait Types extends api.Types { self: SymbolTable => if (phase.erasedTypes) if (parents.isEmpty) ObjectClass.tpe else parents.head else { - val clazz = owner.newRefinementClass(pos) // TODO: why were we passing in NoPosition instead of pos? + val clazz = owner.newRefinementClass(pos) val result = RefinedType(parents, decls, clazz) clazz.setInfo(result) result |