summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab/classfile/PackageParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/symtab/classfile/PackageParser.java')
-rw-r--r--sources/scalac/symtab/classfile/PackageParser.java44
1 files changed, 27 insertions, 17 deletions
diff --git a/sources/scalac/symtab/classfile/PackageParser.java b/sources/scalac/symtab/classfile/PackageParser.java
index 9f14045723..80191c79ba 100644
--- a/sources/scalac/symtab/classfile/PackageParser.java
+++ b/sources/scalac/symtab/classfile/PackageParser.java
@@ -22,10 +22,14 @@ public class PackageParser extends Type.LazyType {
/** the class parser
*/
public ClassParser classCompletion;
+ public SymblParser symblCompletion; // provisional
public PackageParser(Global global) {
this.global = global;
this.classCompletion = new ClassParser(global);
+ this.symblCompletion = new SymblParser(global); // provisional
+ if (global.reporter.verbose)
+ System.out.println("classpath = " + global.classPath);//debug
}
/** complete package type symbol p by loading all package members
@@ -38,7 +42,7 @@ public class PackageParser extends Type.LazyType {
if (name.length() == 0) {
// includeMembers(AbstractFile.open(null, "."), p, members, false);
} else {
- dirname = externalizeFileName(name);
+ dirname = SourceRepresentation.externalizeFileName(name);
assert !dirname.startsWith("com") : p;//debug
if (!dirname.endsWith("/"))
dirname += "/";
@@ -95,11 +99,30 @@ public class PackageParser extends Type.LazyType {
if (locals.lookup(n) == Symbol.NONE) {
TermSymbol module = TermSymbol.newJavaPackageModule(n, p, this);
locals.enter(module);
+ locals.enter(module.moduleClass());
}
- } else if (fname.endsWith(".scala")) {
+ } else if (inclClasses && global.separate && fname.endsWith(".symbl")) {
+ //todo: compare dates between symbl and scala.
Name n = Name.fromString(fname.substring(0, fname.length() - 6))
.toTypeName();
- //if (locals.lookup(n) == Symbol.NONE) {
+ Symbol sym = locals.lookup(n);
+ if (sym == Symbol.NONE ||
+ sym.rawInfoAt(Symbol.FIRST_ID) instanceof ClassParser &&
+ !(sym.rawInfoAt(Symbol.FIRST_ID) instanceof SymblParser)) {
+ ClassSymbol clazz = new ClassSymbol(n, p, symblCompletion);
+ clazz.constructor().setInfo(symblCompletion);
+ clazz.module().setInfo(symblCompletion);
+ locals.enter(clazz);
+ locals.enter(clazz.constructor());
+ locals.enter(clazz.module());
+ }
+ } else if (inclClasses && fname.endsWith(".scala")) {
+ Name n = Name.fromString(fname.substring(0, fname.length() - 6))
+ .toTypeName();
+ Symbol sym = locals.lookup(n);
+ if (sym == Symbol.NONE ||
+ sym.rawInfoAt(Symbol.FIRST_ID) instanceof ClassParser &&
+ !(sym.rawInfoAt(Symbol.FIRST_ID) instanceof SymblParser)) {
SourceCompleter completer = new SourceCompleter(global,
dir.getPath() + File.separatorChar + fname);
ClassSymbol clazz = new ClassSymbol(n, p, completer);
@@ -109,23 +132,10 @@ public class PackageParser extends Type.LazyType {
locals.enter(clazz);
locals.enter(clazz.constructor());
locals.enter(clazz.module());
- //}
+ }
}
}
} catch (IOException e) {
}
}
-
- /** return external representation of file name s,
- * converting '.' to File.separatorChar
- */
-
- public String externalizeFileName(Name n) {
- if ((n == null) || (n.length() == 0))
- return ".";
- byte[] ascii = n.toAscii();
- String s = SourceRepresentation.ascii2string(
- ascii, 0, ascii.length);
- return s.replace('.', File.separatorChar);
- }
}