summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2005-02-01 13:40:37 +0000
committerpaltherr <paltherr@epfl.ch>2005-02-01 13:40:37 +0000
commit67b84cefdb6b0c00efe04ddd57a836395d6395f9 (patch)
tree9a764194733a372712fa04206476ab13b0ec5fb4
parent0f88183f98998ccff74003ea5c373ad0401edb10 (diff)
downloadscala-67b84cefdb6b0c00efe04ddd57a836395d6395f9.tar.gz
scala-67b84cefdb6b0c00efe04ddd57a836395d6395f9.tar.bz2
scala-67b84cefdb6b0c00efe04ddd57a836395d6395f9.zip
- Added origin to loaded symbols.
-rw-r--r--sources/scalac/symtab/Symbol.java7
-rw-r--r--sources/scalac/symtab/classfile/CLRClassParser.java6
-rw-r--r--sources/scalac/symtab/classfile/CLRPackageParser.java4
-rw-r--r--sources/scalac/symtab/classfile/PackageParser.java14
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;
}