Skip to content

Commit 635b634

Browse files
committed
Fix #4929: allow reusing TastyFileManager
Recreate `tempDir` if we're reused after `complete` was called and deleted the existing `tempDir`. The output in #4929 was produced by this commit.
1 parent d3b3192 commit 635b634

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

sbt-dotty/src/dotty/tools/sbtplugin/TastyFileManager.scala

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,14 @@ import scala.collection.mutable
2020
* temporary directory as class files.
2121
*/
2222
final class TastyFileManager extends ClassFileManager {
23-
private[this] val tempDir = Files.createTempDirectory("backup").toFile
23+
private[this] var _tempDir: File = null
24+
private[this] def tempDir = {
25+
if (_tempDir == null) {
26+
_tempDir = Files.createTempDirectory("backup").toFile
27+
println(s"ClassFileManager.tempDir: creating ${_tempDir} in $this")
28+
}
29+
_tempDir
30+
}
2431

2532
private[this] val generatedTastyFiles = new mutable.HashSet[File]
2633
private[this] val movedTastyFiles = new mutable.HashMap[File, File]
@@ -42,7 +49,11 @@ final class TastyFileManager extends ClassFileManager {
4249
IO.deleteFilesEmptyDirs(generatedTastyFiles)
4350
for ((orig, tmp) <- movedTastyFiles) IO.move(tmp, orig)
4451
}
45-
IO.delete(tempDir)
52+
if (_tempDir != null) {
53+
println(s"ClassFileManager.complete($success): deleting $tempDir from $this")
54+
IO.delete(tempDir)
55+
_tempDir = null
56+
}
4657
}
4758

4859
private def tastyFiles(classes: Array[File]): Array[File] = {
@@ -56,6 +67,7 @@ final class TastyFileManager extends ClassFileManager {
5667
}
5768

5869
private def move(c: File): File = {
70+
println(s"ClassFileManager.delete: maybe using $tempDir in $this")
5971
val target = File.createTempFile("sbt", ".tasty", tempDir)
6072
IO.move(c, target)
6173
target

0 commit comments

Comments
 (0)