diff options
author | Martin Odersky <odersky@gmail.com> | 2010-03-11 14:21:21 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2010-03-11 14:21:21 +0000 |
commit | 6aaf4a3d5e730b0ed12eed78ae0940693c37ed22 (patch) | |
tree | 01ae9cbc32875c33b7c51dc5a4a9a936d9c5216b /src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | |
parent | d12ea6d31fa2624cb88f031d346ec13d74992302 (diff) | |
download | scala-6aaf4a3d5e730b0ed12eed78ae0940693c37ed22.tar.gz scala-6aaf4a3d5e730b0ed12eed78ae0940693c37ed22.tar.bz2 scala-6aaf4a3d5e730b0ed12eed78ae0940693c37ed22.zip |
Closes #2940.
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index 6412efd8a2..efc899743d 100644 --- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -589,6 +589,8 @@ abstract class ClassfileParser { while (!isDelimiter(sig(index))) { index += 1 } sig.subName(start, index) } + def existentialType(tparams: List[Symbol], tp: Type): Type = + if (tparams.isEmpty) tp else ExistentialType(tparams, tp) def sig2type(tparams: Map[Name,Symbol], skiptvs: Boolean): Type = { val tag = sig(index); index += 1 tag match { @@ -637,14 +639,14 @@ abstract class ClassfileParser { } accept('>') assert(xs.length > 0) - existentialAbstraction(existentials.toList, TypeRef(pre, classSym, xs.toList)) + existentialType(existentials.toList, TypeRef(pre, classSym, xs.toList)) } else if (classSym.isMonomorphicType) { tp } else { // raw type - existentially quantify all type parameters val eparams = typeParamsToExistentials(classSym, classSym.unsafeTypeParams) val t = TypeRef(pre, classSym, eparams.map(_.tpe)) - val res = existentialAbstraction(eparams, t) + val res = existentialType(eparams, t) if (settings.debug.value && settings.verbose.value) println("raw type " + classSym + " -> " + res) res } |