diff options
author | Martin Odersky <odersky@gmail.com> | 2004-11-19 19:01:38 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-11-19 19:01:38 +0000 |
commit | 4d14ec1b71e7432c6e71a28ebc6fccec217e8c2d (patch) | |
tree | 1f63a411e60ff73ba502a6e8e2b6ddff1b52f4a9 /sources/scalac/symtab/Symbol.java | |
parent | dff9023c169e2c393134b5e38e3a7bbef79b60a9 (diff) | |
download | scala-4d14ec1b71e7432c6e71a28ebc6fccec217e8c2d.tar.gz scala-4d14ec1b71e7432c6e71a28ebc6fccec217e8c2d.tar.bz2 scala-4d14ec1b71e7432c6e71a28ebc6fccec217e8c2d.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab/Symbol.java')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index 3390eb7a26..c6ebc39b6f 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -1057,6 +1057,18 @@ public abstract class Symbol implements Modifiers, Kinds { return type().alternativeTypes(); } + /** if type is a overloaded type, return first stable alternative + * else return array symbol itself + */ + public Symbol stableAlternative() { + switch (type()) { + case OverloadedType(Symbol[] alts, _): + for (int i = 0; i < alts.length; i++) + if (alts[i].isStable()) return alts[i]; + } + return this; + } + /** The symbol accessed by this accessor function. */ public Symbol accessed() { @@ -2151,7 +2163,7 @@ public class ClassSymbol extends TypeSymbol { //System.out.println("field accessor = " + sym);//DEBUG } assert sym != null : this; - return sym; + return sym.stableAlternative(); } public final Symbol rebindSym() { |