diff options
author | Martin Odersky <odersky@gmail.com> | 2005-03-22 15:26:54 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-03-22 15:26:54 +0000 |
commit | 9e67e8eb2a4480d2761d2e08a87cea6b32a71fbb (patch) | |
tree | e71a2f25b3dd0072fa0db11c6e2e1282d4cfa97f /sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | |
parent | 7179a093ef8f5c46941f6440704389316416b7f5 (diff) | |
download | scala-9e67e8eb2a4480d2761d2e08a87cea6b32a71fbb.tar.gz scala-9e67e8eb2a4480d2761d2e08a87cea6b32a71fbb.tar.bz2 scala-9e67e8eb2a4480d2761d2e08a87cea6b32a71fbb.zip |
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala')
-rwxr-xr-x | sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index 38cebbe26c..8554452376 100755 --- a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -176,9 +176,12 @@ abstract class ClassfileParser { private def sigToType(name: Name): Type = { var index = 0; val end = name.length; + def objToAny(tp: Type): Type = + if (tp.symbol == definitions.ObjectClass) definitions.AnyClass.tpe + else tp; def paramsigs2types: List[Type] = if (name(index) == ')') { index = index + 1; List() } - else sig2type :: paramsigs2types; + else objToAny(sig2type) :: paramsigs2types; def sig2type: Type = { val tag = name(index); index = index + 1; tag match { @@ -240,6 +243,12 @@ abstract class ClassfileParser { for (val i <- Iterator.range(0, fieldCount)) parseField(); val methodCount = in.nextChar(); for (val i <- Iterator.range(0, methodCount)) parseMethod(); + if (instanceDefs.lookup(nme.CONSTRUCTOR) == NoSymbol && (sflags & INTERFACE) == 0) { + System.out.println("adding constructor to " + clazz);//debug + instanceDefs enter + clazz.newConstructor(Position.NOPOS) + .setFlag(clazz.flags & CONSTRFLAGS).setInfo(MethodType(List(), clazz.tpe)); + } } } |