diff options
author | Martin Odersky <odersky@gmail.com> | 2007-06-22 10:39:55 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-06-22 10:39:55 +0000 |
commit | 67915c66942365eda284ef0308d74e15cc1daec5 (patch) | |
tree | 1653d90005158ff6f918494909a80890111243c7 /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 4e18a7e8d40efc59ff9d3c0a87eb04c67343e48d (diff) | |
download | scala-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.scala | 8 |
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)) |