diff options
author | Martin Odersky <odersky@gmail.com> | 2003-08-25 15:26:29 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-08-25 15:26:29 +0000 |
commit | 1cfdffddd1d0d8d71426ef6c1b43aba3e9187561 (patch) | |
tree | dff7c39b217d268626af1014bb972d90036ec031 /sources/scalac/symtab | |
parent | 4f8b58c0aed01c7a2659963ab658e5dd4239d9c4 (diff) | |
download | scala-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.java | 15 | ||||
-rw-r--r-- | sources/scalac/symtab/classfile/PackageParser.java | 44 |
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) { |