summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-05-21 15:35:34 +0000
committerMartin Odersky <odersky@gmail.com>2008-05-21 15:35:34 +0000
commit47f35b58791cf2765f3643a6836ad9a6764ee41f (patch)
tree0e3b0f1a624ff273b85448d1c3e2b60c51b46157 /src
parent0d31ac9ab98af8bb5e894deeccbd7bf2a9789b12 (diff)
downloadscala-47f35b58791cf2765f3643a6836ad9a6764ee41f.tar.gz
scala-47f35b58791cf2765f3643a6836ad9a6764ee41f.tar.bz2
scala-47f35b58791cf2765f3643a6836ad9a6764ee41f.zip
Fixed t0942
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala10
1 files changed, 8 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 7235c3341f..04783f70e1 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
@@ -587,6 +587,9 @@ abstract class ClassfileParser {
}
accept('>')
}
+ val ownTypeParams = newTParams.toList
+ if (!ownTypeParams.isEmpty)
+ sym.setInfo(new TypeParamsType(ownTypeParams))
val tpe =
if ((sym eq null) || !sym.isClass)
sig2type(tparams)
@@ -598,9 +601,12 @@ abstract class ClassfileParser {
}
ClassInfoType(parents.toList, instanceDefs, sym)
}
- polyType(newTParams.toList, tpe)
- } // polySigToType
+ polyType(ownTypeParams, tpe)
+ } // sigToType
+ class TypeParamsType(override val typeParams: List[Symbol]) extends LazyType {
+ override def complete(sym: Symbol) { throw new AssertionError("cyclic type dereferencing") }
+ }
def parseAttributes(sym: Symbol, symtype: Type) {
def convertTo(c: Constant, pt: Type): Constant = {