summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-04-28 17:37:27 +0000
committerMartin Odersky <odersky@gmail.com>2005-04-28 17:37:27 +0000
commit0baff379fd40abb757551c7a02676b051b1c8e17 (patch)
tree7352cfd392c87bd78781a66a74df0e00346c829e /sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala
parent6d81466523463b6a7795e841a7cfdf7ad3e06356 (diff)
downloadscala-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-xsources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala12
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);