summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala')
-rw-r--r--src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala b/src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala
index 9ecf51ae42..f5bd254c72 100644
--- a/src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala
+++ b/src/compiler/scala/tools/nsc/interactive/SimpleBuildManager.scala
@@ -38,11 +38,21 @@ class SimpleBuildManager(val settings: Settings) extends BuildManager {
/** Remove the given files from the managed build process. */
def removeFiles(files: Set[AbstractFile]) {
sources --= files
+ deleteClassfiles(files)
+ update(invalidatedByRemove(files))
+ }
+
+
+ /** Return the set of invalidated files caused by removing the given files. */
+ private def invalidatedByRemove(files: Set[AbstractFile]): Set[AbstractFile] = {
+ val deps = compiler.dependencyAnalysis.dependencies
+ deps.dependentFiles(Int.MaxValue, files)
}
def update(added: Set[AbstractFile], removed: Set[AbstractFile]) {
- removeFiles(removed)
- update(added)
+ sources --= removed
+ deleteClassfiles(removed)
+ update(added ++ invalidatedByRemove(removed))
}
/** The given files have been modified by the user. Recompile
@@ -50,6 +60,8 @@ class SimpleBuildManager(val settings: Settings) extends BuildManager {
* have been previously added as source files are recompiled.
*/
def update(files: Set[AbstractFile]) {
+ deleteClassfiles(files)
+
val deps = compiler.dependencyAnalysis.dependencies
val run = compiler.newRun()
compiler.inform("compiling " + files)