From 67b84cefdb6b0c00efe04ddd57a836395d6395f9 Mon Sep 17 00:00:00 2001 From: paltherr Date: Tue, 1 Feb 2005 13:40:37 +0000 Subject: - Added origin to loaded symbols. --- sources/scalac/symtab/Symbol.java | 7 +++++-- sources/scalac/symtab/classfile/CLRClassParser.java | 6 ++++-- sources/scalac/symtab/classfile/CLRPackageParser.java | 4 +++- sources/scalac/symtab/classfile/PackageParser.java | 14 ++++++++++---- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index b7d228d001..029370b65a 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -214,10 +214,11 @@ public abstract class Symbol implements Modifiers, Kinds { * the loader and enters it in the scope if it's non-null. */ public final Symbol newLoadedPackage(Name name, SymbolLoader loader, - Scope scope) + Scope scope, SymbolOrigin origin) { assert loader != null: Debug.show(this) + " - " + name; Symbol peckage = newPackage(Position.NOPOS, name, loader); + peckage.moduleClass().setOrigin(origin); if (scope != null) scope.enterNoHide(peckage); return peckage; } @@ -286,15 +287,17 @@ public abstract class Symbol implements Modifiers, Kinds { * and the module in the scope if it's non-null. */ public final ClassSymbol newLoadedClass(int flags, Name name, - SymbolLoader loader, Scope scope) + SymbolLoader loader, Scope scope, SymbolOrigin origin) { assert isPackageClass(): Debug.show(this); assert loader != null: Debug.show(this) + " - " + name; ClassSymbol clasz = new LinkedClassSymbol(this, flags, name); clasz.setInfo(loader); + clasz.setOrigin(origin); clasz.allConstructors().setInfo(loader); clasz.linkedModule().setInfo(loader); clasz.linkedModule().moduleClass().setInfo(loader); + clasz.linkedModule().moduleClass().setOrigin(origin); if (scope != null) scope.enterNoHide(clasz); if (scope != null) scope.enterNoHide(clasz.linkedModule()); return clasz; diff --git a/sources/scalac/symtab/classfile/CLRClassParser.java b/sources/scalac/symtab/classfile/CLRClassParser.java index 78c11a5524..110486448c 100644 --- a/sources/scalac/symtab/classfile/CLRClassParser.java +++ b/sources/scalac/symtab/classfile/CLRClassParser.java @@ -12,6 +12,7 @@ import scalac.Global; import scalac.atree.AConstant; import scalac.symtab.Symbol; import scalac.symtab.SymbolLoader; +import scalac.symtab.SymbolOrigin; import scalac.symtab.Scope; import scalac.symtab.Modifiers; import scalac.symtab.Type.*; @@ -99,8 +100,9 @@ public class CLRClassParser extends SymbolLoader { // put the class at the level of its outermost class // the owner of a class is always its most specific package CLRClassParser loader = new CLRClassParser(global, ntype); - Symbol nclazz = - clazz.owner().newLoadedClass(JAVA, classname, loader, null); + SymbolOrigin origin = SymbolOrigin.CLRAssembly(ntype.Assembly()); + Symbol nclazz = clazz.owner().newLoadedClass + (JAVA, classname, loader, null, origin); clrTypes.map(nclazz, ntype); // create an alias in the module of the outer class Symbol alias = staticsClass.newTypeAlias(Position.NOPOS, diff --git a/sources/scalac/symtab/classfile/CLRPackageParser.java b/sources/scalac/symtab/classfile/CLRPackageParser.java index d97ab203a9..c7e5296e17 100644 --- a/sources/scalac/symtab/classfile/CLRPackageParser.java +++ b/sources/scalac/symtab/classfile/CLRPackageParser.java @@ -22,6 +22,7 @@ import scalac.util.Name; import scalac.symtab.Scope; import scalac.symtab.Symbol; import scalac.symtab.SymbolLoader; +import scalac.symtab.SymbolOrigin; import ch.epfl.lamp.compiler.msil.Type; import ch.epfl.lamp.compiler.msil.Attribute; @@ -128,8 +129,9 @@ public final class CLRPackageParser extends PackageParser { : new CLRClassParser(Global.instance, type); Name classname = Name.fromString(type.Name).toTypeName(); + SymbolOrigin origin = SymbolOrigin.CLRAssembly(type.Assembly()); Symbol clazz = clasz.newLoadedClass - (JAVA, classname, loader, members); + (JAVA, classname, loader, members, origin); clrTypes.map(clazz, type); //Type moduleType = getType(type.FullName + "$"); //map(clazz, moduleType != null ? moduleType : type); diff --git a/sources/scalac/symtab/classfile/PackageParser.java b/sources/scalac/symtab/classfile/PackageParser.java index 05e1276cf7..fdbc796916 100644 --- a/sources/scalac/symtab/classfile/PackageParser.java +++ b/sources/scalac/symtab/classfile/PackageParser.java @@ -20,6 +20,7 @@ import scalac.symtab.Scope; import scalac.symtab.SourceCompleter; import scalac.symtab.Symbol; import scalac.symtab.SymbolLoader; +import scalac.symtab.SymbolOrigin; import scalac.symtab.Type; import scalac.util.Name; import scalac.util.Debug; @@ -183,7 +184,8 @@ public class PackageParser extends SymbolLoader { AbstractFile sfile = (AbstractFile)entry.getValue(); Name classname = Name.fromString(name).toTypeName(); SymbolLoader loader = new SourceCompleter(global, sfile); - clasz.newLoadedClass(0, classname, loader, members); + SymbolOrigin origin = SymbolOrigin.ScalaFile(sfile); + clasz.newLoadedClass(0, classname, loader, members, origin); } for (Iterator i = symbols.entrySet().iterator(); i.hasNext(); ) { HashMap.Entry entry = (HashMap.Entry)i.next(); @@ -191,7 +193,8 @@ public class PackageParser extends SymbolLoader { AbstractFile zfile = (AbstractFile)entry.getValue(); Name classname = Name.fromString(name).toTypeName(); SymbolLoader loader = new SymblParser(global, zfile); - clasz.newLoadedClass(0, classname, loader, members); + SymbolOrigin origin = SymbolOrigin.SymblFile(zfile); + clasz.newLoadedClass(0, classname, loader, members, origin); } for (Iterator i = classes.entrySet().iterator(); i.hasNext(); ) { HashMap.Entry entry = (HashMap.Entry)i.next(); @@ -199,14 +202,17 @@ public class PackageParser extends SymbolLoader { AbstractFile cfile = (AbstractFile)entry.getValue(); Name classname = Name.fromString(name).toTypeName(); SymbolLoader loader = new ClassParser(global, cfile); - clasz.newLoadedClass(JAVA, classname, loader, members); + SymbolOrigin origin = SymbolOrigin.ClassFile(cfile, null); + clasz.newLoadedClass(JAVA, classname, loader, members, origin); } for (Iterator i = packages.entrySet().iterator(); i.hasNext(); ) { HashMap.Entry entry = (HashMap.Entry)i.next(); String name = (String)entry.getKey(); AbstractFile dfile = (AbstractFile)entry.getValue(); + Name packagename = Name.fromString(name); SymbolLoader loader = newPackageParser(dfile); - clasz.newLoadedPackage(Name.fromString(name), loader, members); + SymbolOrigin origin = SymbolOrigin.Directory(dfile); + clasz.newLoadedPackage(packagename, loader, members, origin); } return members; } -- cgit v1.2.3