diff options
author | Martin Odersky <odersky@gmail.com> | 2004-01-06 14:02:00 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-01-06 14:02:00 +0000 |
commit | 22499e81b5526b8f8713fc5703d785d12439fef4 (patch) | |
tree | 18f87fac93bf8577f46477c7efb0605512c936ff /sources/scalac/symtab/Symbol.java | |
parent | 7b8b6d0adf3e1e84829f9c1bc97854883cbd1ebd (diff) | |
download | scala-22499e81b5526b8f8713fc5703d785d12439fef4.tar.gz scala-22499e81b5526b8f8713fc5703d785d12439fef4.tar.bz2 scala-22499e81b5526b8f8713fc5703d785d12439fef4.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab/Symbol.java')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index f7430a8402..8deb6ef2e6 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -1300,7 +1300,23 @@ public class TermSymbol extends Symbol { Scope.Entry e = scope.lookupEntry(name); if (e.owner == scope && e.sym.isExternal() && e.sym.kind == VAL) { TermSymbol sym = (TermSymbol) e.sym; - sym.update(pos, flags); + if (sym.isInitialized()) { + switch (sym.type()) { + case OverloadedType(Symbol[] alts, Type[] alttypes): + int i = 0; + while (i < alts.length && !alts[i].isExternal()) + i++; + if (i < alts.length) { + //System.out.println("PATCH: " + alts[i] + ":" + alttypes[i]);//DEBUG + alts[i].update(pos, flags); + if (i == alts.length - 1) + sym.update(pos, sym.flags); + return (TermSymbol) alts[i]; + } + throw new ApplicationError("TermSymbol.define " + sym); + } + } + sym.update(pos, flags); return sym; } else { return new TermSymbol(pos, name, owner, flags); |