summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab/Symbol.java
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-01-06 14:02:00 +0000
committerMartin Odersky <odersky@gmail.com>2004-01-06 14:02:00 +0000
commit22499e81b5526b8f8713fc5703d785d12439fef4 (patch)
tree18f87fac93bf8577f46477c7efb0605512c936ff /sources/scalac/symtab/Symbol.java
parent7b8b6d0adf3e1e84829f9c1bc97854883cbd1ebd (diff)
downloadscala-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.java18
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);