From 810d03161421b48964bb0a81339a02c9644eb7a8 Mon Sep 17 00:00:00 2001 From: paltherr Date: Sun, 29 Feb 2004 19:57:55 +0000 Subject: - Fixed mk*Ref methods to avoid generation of t... - Fixed mk*Ref methods to avoid generation of trees containing ROOT --- sources/scalac/ast/TreeGen.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'sources/scalac/ast') 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. */ -- cgit v1.2.3