diff options
author | Martin Odersky <odersky@gmail.com> | 2003-11-12 18:01:30 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-11-12 18:01:30 +0000 |
commit | f5437e9a8bb543cf57b295739dd3abdebb7be651 (patch) | |
tree | 82d04d9b9de6e798631dfbc12fa62f0f8be3dc02 /sources/scalac/symtab | |
parent | f8ed082d80fb662f96d9a95dad3d7481b7e88818 (diff) | |
download | scala-f5437e9a8bb543cf57b295739dd3abdebb7be651.tar.gz scala-f5437e9a8bb543cf57b295739dd3abdebb7be651.tar.bz2 scala-f5437e9a8bb543cf57b295739dd3abdebb7be651.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 7 | ||||
-rw-r--r-- | sources/scalac/symtab/classfile/Pickle.java | 6 | ||||
-rw-r--r-- | sources/scalac/symtab/classfile/UnPickle.java | 11 |
3 files changed, 15 insertions, 9 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index 6d441e5f29..fa2bdbe0ca 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -1278,6 +1278,11 @@ public class TermSymbol extends Symbol { return sym; } + public TermSymbol makeConstructor(ClassSymbol clazz) { + this.clazz = clazz; + return this; + } + public static TermSymbol newJavaConstructor(Symbol clazz) { return newConstructor(clazz, clazz.flags & (ACCESSFLAGS | JAVA)); } @@ -1840,7 +1845,7 @@ public class ClassSymbol extends TypeSymbol { } for (int i = 0; i < index; i++) sym = it.next(); - System.out.println("field accessor = " + sym); + //System.out.println("field accessor = " + sym);//DEBUG } assert sym != null : this; return sym; diff --git a/sources/scalac/symtab/classfile/Pickle.java b/sources/scalac/symtab/classfile/Pickle.java index 871a417509..3a3747822b 100644 --- a/sources/scalac/symtab/classfile/Pickle.java +++ b/sources/scalac/symtab/classfile/Pickle.java @@ -133,7 +133,8 @@ public class Pickle implements Kinds, Modifiers, EntryTags { putSymbol(it.next()); break; case VAL: - if (sym.isPrimaryConstructor()) + if (sym.isConstructor() && + sym == sym.constructorClass().allConstructors()) putSymbol(sym.constructorClass()); else if (sym.isModule()) putSymbol(sym.moduleClass()); @@ -341,7 +342,8 @@ public class Pickle implements Kinds, Modifiers, EntryTags { writeRef(sym.allConstructors()); break; case VAL: - if (sym.isPrimaryConstructor()) + if (sym.isConstructor() && + sym == sym.constructorClass().allConstructors()) writeRef(sym.constructorClass()); else if (sym.isModule()) writeRef(sym.moduleClass()); diff --git a/sources/scalac/symtab/classfile/UnPickle.java b/sources/scalac/symtab/classfile/UnPickle.java index e4413be233..905e5a8b22 100644 --- a/sources/scalac/symtab/classfile/UnPickle.java +++ b/sources/scalac/symtab/classfile/UnPickle.java @@ -246,18 +246,17 @@ public class UnPickle implements Kinds, Modifiers, EntryTags, TypeTags { sym.setFirstInfo(getType(inforef)); sym.setTypeOfThis(readTypeRef()); Symbol constr = readSymbolRef(); - if (constr != sym.primaryConstructor()) { - assert constr.type() instanceof Type.OverloadedType - : sym + " " + constr + ":" + constr.type(); - constr.copyTo(sym.allConstructors()); - } + assert constr == sym.allConstructors(); + Symbol[] alts = constr.alternativeSymbols(); + for (int i = 0; i < alts.length; i++) + ((TermSymbol)alts[i]).makeConstructor((ClassSymbol)sym); break; case VALsym: if (bp < end) { Symbol tsym = readSymbolRef(); if (name == Names.CONSTRUCTOR) { - entries[n] = sym = tsym.primaryConstructor(); + entries[n] = sym = tsym.allConstructors(); sym.flags = flags; } else { assert (flags & MODUL) != 0 : name; |