summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-06-22 10:39:55 +0000
committerMartin Odersky <odersky@gmail.com>2007-06-22 10:39:55 +0000
commit67915c66942365eda284ef0308d74e15cc1daec5 (patch)
tree1653d90005158ff6f918494909a80890111243c7 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent4e18a7e8d40efc59ff9d3c0a87eb04c67343e48d (diff)
downloadscala-67915c66942365eda284ef0308d74e15cc1daec5.tar.gz
scala-67915c66942365eda284ef0308d74e15cc1daec5.tar.bz2
scala-67915c66942365eda284ef0308d74e15cc1daec5.zip
added support for higher-kinded existentials; a...
added support for higher-kinded existentials; added Iterable.toStream
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 7e486c3439..34f09f6acf 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1714,11 +1714,12 @@ trait Typers { self: Analyzer =>
* and in the returned type itself.
*/
protected def existentialTransform(rawSyms: List[Symbol], tp: Type) = {
- val typeParams = rawSyms map { sym =>
+ val typeParams: List[Symbol] = rawSyms map { sym =>
val (name, bound) =
if (sym.isClass)
(sym.name,
- mkTypeBounds(AllClass.tpe, anonymousClassRefinement(sym)))
+ parameterizedType(
+ sym.typeParams, mkTypeBounds(AllClass.tpe, anonymousClassRefinement(sym))))
else if (sym.isAbstractType)
(sym.name,
sym.info)
@@ -1727,7 +1728,8 @@ trait Typers { self: Analyzer =>
mkTypeBounds(AllClass.tpe, intersectionType(List(sym.tpe, SingletonClass.tpe))))
else
throw new Error("unexpected alias type: "+sym)
- sym.owner.newAbstractType(sym.pos, name) setFlag EXISTENTIAL setInfo bound
+ val quantified: Symbol = sym.owner.newAbstractType(sym.pos, name)
+ quantified setFlag EXISTENTIAL setInfo bound.cloneInfo(quantified)
}
val typeParamTypes = typeParams map (_.tpe)
for (tparam <- typeParams) tparam.setInfo(tparam.info.subst(rawSyms, typeParamTypes))