Skip to content

Commit 55dfc16

Browse files
committed
Polishing to InteractiveDriver.classesFromZip
1 parent 9ed0524 commit 55dfc16

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

compiler/src/dotty/tools/dotc/interactive/InteractiveDriver.scala

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,8 @@ class InteractiveDriver(val settings: List[String]) extends Driver {
7979
// Like in `ZipArchiveFileLookup` we assume that zips are immutable
8080
private val zipClassPathClasses: Seq[TypeName] = {
8181
val names = new mutable.ListBuffer[TypeName]
82-
zipClassPaths.foreach { zipCp =>
83-
val zipFile = new ZipFile(zipCp.zipFile)
84-
classesFromZip(zipFile, names)
85-
}
82+
for (cp <- zipClassPaths)
83+
classesFromZip(cp.zipFile, names)
8684
names
8785
}
8886

@@ -110,8 +108,7 @@ class InteractiveDriver(val settings: List[String]) extends Driver {
110108
if (output.isDirectory) {
111109
classesFromDir(output.jpath, classNames)
112110
} else {
113-
val zipFile = new ZipFile(output.file)
114-
classesFromZip(zipFile, classNames)
111+
classesFromZip(output.file, classNames)
115112
}
116113
classNames.flatMap { cls =>
117114
treesFromClassName(cls, id)
@@ -213,15 +210,21 @@ class InteractiveDriver(val settings: List[String]) extends Driver {
213210
}
214211

215212
/** Adds the names of the classes that are defined in `zipFile` to `buffer`. */
216-
private def classesFromZip(zipFile: ZipFile, buffer: mutable.ListBuffer[TypeName]): Unit = {
213+
private def classesFromZip(file: File, buffer: mutable.ListBuffer[TypeName]): Unit = {
214+
val zipFile = new ZipFile(file)
217215
try {
218-
for {
219-
entry <- zipFile.stream.toArray((size: Int) => new Array[ZipEntry](size))
220-
name = entry.getName
221-
tastySuffix <- tastySuffixes.find(name.endsWith)
222-
} buffer += name.replace("/", ".").stripSuffix(tastySuffix).toTypeName
216+
val entries = zipFile.entries()
217+
while (entries.hasMoreElements) {
218+
val entry = entries.nextElement()
219+
val name = entry.getName
220+
tastySuffixes.find(name.endsWith) match {
221+
case Some(tastySuffix) =>
222+
buffer += name.replace("/", ".").stripSuffix(tastySuffix).toTypeName
223+
case _ =>
224+
}
225+
}
223226
}
224-
finally zipFile.close()
227+
finally zipFile.close()
225228
}
226229

227230
/** Adds the names of the classes that are defined in `dir` to `buffer`. */

0 commit comments

Comments
 (0)