summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-08-25 15:26:29 +0000
committerMartin Odersky <odersky@gmail.com>2003-08-25 15:26:29 +0000
commit1cfdffddd1d0d8d71426ef6c1b43aba3e9187561 (patch)
treedff7c39b217d268626af1014bb972d90036ec031 /sources/scalac/symtab
parent4f8b58c0aed01c7a2659963ab658e5dd4239d9c4 (diff)
downloadscala-1cfdffddd1d0d8d71426ef6c1b43aba3e9187561.tar.gz
scala-1cfdffddd1d0d8d71426ef6c1b43aba3e9187561.tar.bz2
scala-1cfdffddd1d0d8d71426ef6c1b43aba3e9187561.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r--sources/scalac/symtab/Definitions.java15
-rw-r--r--sources/scalac/symtab/classfile/PackageParser.java44
2 files changed, 24 insertions, 35 deletions
diff --git a/sources/scalac/symtab/Definitions.java b/sources/scalac/symtab/Definitions.java
index fcafabc1aa..1cf278c6c0 100644
--- a/sources/scalac/symtab/Definitions.java
+++ b/sources/scalac/symtab/Definitions.java
@@ -315,10 +315,19 @@ public class Definitions {
// add members to class scala.Any
MATCH = new TermSymbol(
Position.NOPOS, Names.match, ANY_CLASS, Modifiers.FINAL);
+ Symbol matchTyParam1 = newTypeParameter(MATCH, ANY_TYPE);
+ Symbol matchTyParam2 = newTypeParameter(MATCH, ANY_TYPE);
MATCH.setInfo(
- Type.MethodType(
- new Symbol[]{newParameter(MATCH, OBJECT_TYPE)},
- OBJECT_TYPE));
+ Type.PolyType(
+ new Symbol[]{matchTyParam1, matchTyParam2},
+ Type.MethodType(
+ new Symbol[]{
+ newParameter(
+ MATCH,
+ functionType(
+ new Type[]{matchTyParam1.typeConstructor()},
+ matchTyParam2.typeConstructor()))},
+ matchTyParam2.typeConstructor())));
ANY_CLASS.members().enter(MATCH);
AS = new TermSymbol(
diff --git a/sources/scalac/symtab/classfile/PackageParser.java b/sources/scalac/symtab/classfile/PackageParser.java
index 9d62fb1009..842cbd3870 100644
--- a/sources/scalac/symtab/classfile/PackageParser.java
+++ b/sources/scalac/symtab/classfile/PackageParser.java
@@ -42,9 +42,7 @@ public class PackageParser extends Type.LazyType {
String dirname = null;
Name name = p.fullName();
HashMap/*<Symbol, AbstractFile>*/ symFile = new HashMap();
- if (name.length() == 0) {
- // includeMembers(AbstractFile.open(null, "."), p, members, false);
- } else {
+ if (name.length() != 0) {
dirname = SourceRepresentation.externalizeFileName(name);
if (!dirname.endsWith("/"))
dirname += "/";
@@ -53,7 +51,7 @@ public class PackageParser extends Type.LazyType {
for (int i = 0; i < base.length; i++) {
includeMembers(
AbstractFile.open(base[i], dirname),
- p, members, dirname != null, symFile);
+ p, members, symFile);
}
p.setInfo(Type.compoundType(Type.EMPTY_ARRAY, members, p));
if (dirname == null)
@@ -81,9 +79,10 @@ public class PackageParser extends Type.LazyType {
* in package/module scope
*/
protected void includeMembers(AbstractFile dir, Symbol p, Scope locals,
- boolean inclClasses, HashMap symFile) {
+ HashMap symFile) {
if (dir == null)
return;
+ boolean inclClasses = p != global.definitions.ROOT_CLASS;
String[] filenames = null;
try {
if ((filenames = dir.list()) == null)
@@ -116,33 +115,6 @@ public class PackageParser extends Type.LazyType {
}
symFile.put(clazz, f);
}
- } else if (fname.endsWith("/") && !fname.equals("META-INF/")) {
- Name n = Name.fromString(fname.substring(0, fname.length() - 1));
- if (locals.lookup(n) == Symbol.NONE) {
- TermSymbol module = TermSymbol.newJavaPackageModule(n, p, this);
- locals.enter(module);
- //todo: moduleClass needs to be entered?
- locals.enter(module.moduleClass());
- }
-
-/*
- } else if (inclClasses && fname.endsWith(".symbl")) {
- //todo: compare dates between symbl and scala.
- Name n = Name.fromString(fname.substring(0, fname.length() - 6))
- .toTypeName();
- Symbol sym = locals.lookup(n);
- if (sym == Symbol.NONE ||
- sym.isPackage() ||
- sym.rawInfoAt(Symbol.FIRST_ID) instanceof ClassParser &&
- !(sym.rawInfoAt(Symbol.FIRST_ID) instanceof SymblParser)) {
- ClassSymbol clazz = new ClassSymbol(n, p, symblCompletion);
- //todo: needed
- clazz.allConstructors().setInfo(symblCompletion);
- clazz.module().setInfo(symblCompletion);
- locals.enter(clazz);
- locals.enter(clazz.module());
- }
-*/
} else if (inclClasses && fname.endsWith(".scala")) {
Name n = Name.fromString(fname.substring(0, fname.length() - 6))
.toTypeName();
@@ -157,6 +129,14 @@ public class PackageParser extends Type.LazyType {
locals.enter(clazz.module());
symFile.put(clazz, f);
}
+ } else if (fname.endsWith("/") && !fname.equals("META-INF/")) {
+ Name n = Name.fromString(fname.substring(0, fname.length() - 1));
+ if (locals.lookup(n) == Symbol.NONE) {
+ TermSymbol module = TermSymbol.newJavaPackageModule(n, p, this);
+ locals.enter(module);
+ //todo: moduleClass needs to be entered?
+ locals.enter(module.moduleClass());
+ }
}
}
} catch (IOException e) {