summaryrefslogtreecommitdiff
path: root/sources/scalac/ast
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-02-29 19:57:55 +0000
committerpaltherr <paltherr@epfl.ch>2004-02-29 19:57:55 +0000
commit810d03161421b48964bb0a81339a02c9644eb7a8 (patch)
tree74ed87394469d153f488aec8ad84916082d9511d /sources/scalac/ast
parent56747fd2dec3cdd46bc7aaa4df181d32a3268902 (diff)
downloadscala-810d03161421b48964bb0a81339a02c9644eb7a8.tar.gz
scala-810d03161421b48964bb0a81339a02c9644eb7a8.tar.bz2
scala-810d03161421b48964bb0a81339a02c9644eb7a8.zip
- Fixed mk*Ref methods to avoid generation of t...
- Fixed mk*Ref methods to avoid generation of trees containing ROOT
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r--sources/scalac/ast/TreeGen.java12
1 files changed, 7 insertions, 5 deletions
diff --git a/sources/scalac/ast/TreeGen.java b/sources/scalac/ast/TreeGen.java
index 524e0ed253..b6ef16a424 100644
--- a/sources/scalac/ast/TreeGen.java
+++ b/sources/scalac/ast/TreeGen.java
@@ -252,8 +252,8 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
public Tree mkRef(int pos, Type stable, Symbol symbol) {
switch (stable) {
case ThisType(Symbol clasz):
+ if (clasz.isRoot() || clasz.isNone()) return Ident(pos, symbol);
if (clasz.isPackage()) return mkRef(pos, mkGlobalRef(pos, clasz.module()), symbol); // !!!
- if (clasz.isNone()) return Ident(pos, symbol);
return mkRef(pos, This(pos, clasz), symbol);
case SingleType(Type prefix, Symbol member):
Tree tree = mkRef(pos, prefix, member);
@@ -270,15 +270,17 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
/** Builds a local reference to given symbol. */
public Tree mkLocalRef(int pos, Symbol symbol) {
- if (symbol.isRoot()) return Ident(pos, symbol);
+ assert symbol.isTerm(): Debug.show(symbol);
return mkRef(pos, symbol.owner().thisType(), symbol);
}
/** Builds a global reference to given symbol. */
public Tree mkGlobalRef(int pos, Symbol symbol) {
- if (symbol.isRoot()) return Ident(pos, symbol);
- assert symbol.owner().isModuleClass(): Debug.show(symbol);
- return mkRef(pos, mkGlobalRef(pos, symbol.owner().module()), symbol);
+ assert symbol.isTerm(): Debug.show(symbol);
+ Symbol owner = symbol.owner();
+ if (owner.isRoot()) return Ident(pos, symbol);
+ assert owner.isModuleClass(): Debug.show(symbol);
+ return mkRef(pos, mkGlobalRef(pos, owner.module()), symbol);
}
/** Builds a This node corresponding to given class. */