diff options
author | Martin Odersky <odersky@gmail.com> | 2005-04-28 17:37:27 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-04-28 17:37:27 +0000 |
commit | 0baff379fd40abb757551c7a02676b051b1c8e17 (patch) | |
tree | 7352cfd392c87bd78781a66a74df0e00346c829e /sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | |
parent | 6d81466523463b6a7795e841a7cfdf7ad3e06356 (diff) | |
download | scala-0baff379fd40abb757551c7a02676b051b1c8e17.tar.gz scala-0baff379fd40abb757551c7a02676b051b1c8e17.tar.bz2 scala-0baff379fd40abb757551c7a02676b051b1c8e17.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 | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index 569e9f6273..d63f186146 100755 --- a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -253,10 +253,10 @@ abstract class ClassfileParser { 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 + //System.out.println("adding constructor to " + clazz);//DEBUG instanceDefs enter clazz.newConstructor(Position.NOPOS) - .setFlag(clazz.flags & CONSTRFLAGS).setInfo(MethodType(List(), clazz.tpe)); + .setFlag(clazz.flags & ConstrFlags).setInfo(MethodType(List(), clazz.tpe)); } } } @@ -285,7 +285,13 @@ abstract class ClassfileParser { in.skip(4); skipAttributes(); } else { val name = pool.getName(in.nextChar()); - val info = pool.getType(in.nextChar()); + var info = pool.getType(in.nextChar()); + if (name == nme.CONSTRUCTOR) + info match { + case MethodType(formals, restpe) => + assert(restpe == definitions.UnitClass.tpe); + info = MethodType(formals, clazz.tpe) + } val sym = getOwner(jflags) .newMethod(Position.NOPOS, name).setFlag(sflags).setInfo(info); parseAttributes(sym, info); |