summaryrefslogtreecommitdiff
path: root/sources/scalac/ast
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-04-04 13:01:16 +0000
committerpaltherr <paltherr@epfl.ch>2004-04-04 13:01:16 +0000
commit7a5770aa1e4b149d2cc345232cad92826185b4cb (patch)
tree56995452cab554abcf5847e3201373b0851bc920 /sources/scalac/ast
parent9278a377fd6ca500bc6a6cdedf21eb876ecbcfbc (diff)
downloadscala-7a5770aa1e4b149d2cc345232cad92826185b4cb.tar.gz
scala-7a5770aa1e4b149d2cc345232cad92826185b4cb.tar.bz2
scala-7a5770aa1e4b149d2cc345232cad92826185b4cb.zip
- Added method mkQualifier
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r--sources/scalac/ast/TreeGen.java40
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);