summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/Global.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-01-19 18:19:58 +0000
committerMartin Odersky <odersky@gmail.com>2006-01-19 18:19:58 +0000
commitcacf5a2b6a873b60a634c78a30f6deeb283ffeec (patch)
tree1ce3c96605e60fc2f86999f8b0b8cc5db65a278a /src/compiler/scala/tools/nsc/Global.scala
parente885bf6a4b0110185cde628dc367091284f56c9f (diff)
downloadscala-cacf5a2b6a873b60a634c78a30f6deeb283ffeec.tar.gz
scala-cacf5a2b6a873b60a634c78a30f6deeb283ffeec.tar.bz2
scala-cacf5a2b6a873b60a634c78a30f6deeb283ffeec.zip
Diffstat (limited to 'src/compiler/scala/tools/nsc/Global.scala')
-rw-r--r--src/compiler/scala/tools/nsc/Global.scala24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala
index cdf0b82e29..cafe682170 100644
--- a/src/compiler/scala/tools/nsc/Global.scala
+++ b/src/compiler/scala/tools/nsc/Global.scala
@@ -365,6 +365,14 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
/** A map from compiled top-level symbols to their picklers */
val symData = new HashMap[Symbol, PickleBuffer];
+ /** does this run compile given class, module, or case factory? */
+ def compiles(sym: Symbol): boolean =
+ if (sym == NoSymbol) false
+ else if (symSource.isDefinedAt(sym)) true
+ else if (!sym.owner.isPackageClass) compiles(sym.toplevelClass)
+ else if (sym.isModuleClass) compiles(sym.sourceModule)
+ else false;
+
def compileSources(sources: List[SourceFile]): unit = {
val startTime = System.currentTimeMillis();
reporter.reset;
@@ -395,27 +403,13 @@ class Global(val settings: Settings, val reporter: Reporter) extends SymbolTable
if (reporter.errors == 0) {
assert(symData.isEmpty, symData.elements.toList);
-/*
- for (val Pair(sym, pickled) <- symData.elements.toList) {
- sym setPos Position.NOPOS;
-// if (symData contains sym) {
-// symData -= sym;
-// symData -= sym.linkedSym;
-// writeSymblFile(sym, pickled)
-// }
-// }
-*/
- for (val Pair(sym, file) <- symSource.elements) {
- sym setPos Position.NOPOS;
- if (sym.isTerm) sym.moduleClass setPos Position.NOPOS;
- resetPackageClass(sym.owner);
- }
} else {
for (val Pair(sym, file) <- symSource.elements) {
sym.reset(new loaders.SourcefileLoader(file));
if (sym.isTerm) sym.moduleClass.reset(loaders.moduleClassLoader);
}
}
+ for (val Pair(sym, file) <- symSource.elements) resetPackageClass(sym.owner);
informTime("total", startTime);
}