diff options
author | paltherr <paltherr@epfl.ch> | 2004-04-04 13:01:16 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-04-04 13:01:16 +0000 |
commit | 7a5770aa1e4b149d2cc345232cad92826185b4cb (patch) | |
tree | 56995452cab554abcf5847e3201373b0851bc920 /sources/scalac | |
parent | 9278a377fd6ca500bc6a6cdedf21eb876ecbcfbc (diff) | |
download | scala-7a5770aa1e4b149d2cc345232cad92826185b4cb.tar.gz scala-7a5770aa1e4b149d2cc345232cad92826185b4cb.tar.bz2 scala-7a5770aa1e4b149d2cc345232cad92826185b4cb.zip |
- Added method mkQualifier
Diffstat (limited to 'sources/scalac')
-rw-r--r-- | sources/scalac/ast/TreeGen.java | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/sources/scalac/ast/TreeGen.java b/sources/scalac/ast/TreeGen.java index fced52680f..20b3cab3c4 100644 --- a/sources/scalac/ast/TreeGen.java +++ b/sources/scalac/ast/TreeGen.java @@ -250,22 +250,9 @@ public class TreeGen implements Kinds, Modifiers, TypeTags { * Builds a reference to given symbol with given stable prefix. */ public Tree mkRef(int pos, Type stable, Symbol symbol) { - switch (stable) { - case NoPrefix: - return Ident(pos, symbol); - case ThisType(Symbol clasz): - return mkRef(pos, This(pos, clasz), symbol); - case SingleType(Type prefix, Symbol member): - Tree qualifier = mkRef(pos, prefix, member); - switch (qualifier.type()) { - case MethodType(Symbol[] params, _): - assert params.length == 0: qualifier.type(); - qualifier = Apply(pos, qualifier); - } - return mkRef(pos, qualifier, symbol); - default: - throw Debug.abort("illegal case", stable); - } + Tree qualifier = mkQualifier(pos, stable); + if (qualifier == Tree.Empty) return Ident(pos, symbol); + return mkRef(pos, qualifier, symbol); } /** Builds a local reference to given symbol. */ @@ -283,6 +270,27 @@ public class TreeGen implements Kinds, Modifiers, TypeTags { return mkRef(pos, prefix, symbol); } + /** Builds a qualifier corresponding to given stable prefix. */ + public Tree mkQualifier(int pos, Type stable) { + switch (stable) { + case NoPrefix: + return Tree.Empty; + case ThisType(Symbol clasz): + return This(pos, clasz); + case SingleType(Type prefix, Symbol member): + Tree qualifier = mkRef(pos, prefix, member); + switch (qualifier.type()) { + case MethodType(Symbol[] params, _): + assert params.length == 0: qualifier.type(); + return Apply(pos, qualifier); + default: + return qualifier; + } + default: + throw Debug.abort("illegal case", stable); + } + } + /** Builds a This node corresponding to given class. */ public This This(int pos, Symbol clazz) { assert clazz.isClassType(): Debug.show(clazz); |