Skip to content

Commit a8b357b

Browse files
committed
refactor
1 parent d2f579a commit a8b357b

File tree

4 files changed

+23
-39
lines changed

4 files changed

+23
-39
lines changed

compiler/src/dotty/tools/dotc/classpath/ClassPath.scala

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,6 @@ trait BinaryFileEntry extends ClassRepresentation {
1818
def file: AbstractFile
1919
def binary: Option[AbstractFile] = Some(file)
2020
}
21-
object BinaryFileEntry {
22-
def apply(classFile: Option[AbstractFile], tasty: Option[AbstractFile]): BinaryFileEntry =
23-
tasty match
24-
case Some(tasty) => TastyFileEntry(tasty, classFile)
25-
case None => ClassFileEntry(classFile.get)
26-
27-
def apply(file: AbstractFile): BinaryFileEntry =
28-
if file.extension == "tasty" then TastyFileEntry(file, None)
29-
else ClassFileEntry(file)
30-
31-
def from(classFile: Option[AbstractFile], tasty: Option[AbstractFile]): Option[BinaryFileEntry] =
32-
tasty match
33-
case Some(file) => Some(TastyFileEntry(file, classFile))
34-
case None => classFile.map(ClassFileEntry(_))
35-
}
3621

3722
trait SourceFileEntry extends ClassRepresentation {
3823
def file: AbstractFile

compiler/src/dotty/tools/dotc/classpath/DirectoryClassPath.scala

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ final class JrtClassPath(fs: java.nio.file.FileSystem) extends ClassPath with No
188188
else
189189
packageToModuleBases.getOrElse(inPackage.dottedString, Nil).flatMap(x =>
190190
Files.list(x.resolve(inPackage.dirPathTrailingSlash)).iterator().asScala.filter(_.getFileName.toString.endsWith(".class"))).map(x =>
191-
BinaryFileEntry(x.toPlainFile)).toVector
191+
ClassFileEntry(x.toPlainFile)).toVector
192192

193193
override private[dotty] def list(inPackage: PackageName): ClassPathEntries =
194194
if (inPackage.isRoot) ClassPathEntries(packages(inPackage), Nil)
@@ -251,7 +251,7 @@ final class CtSymClassPath(ctSym: java.nio.file.Path, release: Int) extends Clas
251251
else {
252252
val sigFiles = packageIndex.getOrElse(inPackage.dottedString, Nil).iterator.flatMap(p =>
253253
Files.list(p).iterator.asScala.filter(_.getFileName.toString.endsWith(".sig")))
254-
sigFiles.map(f => BinaryFileEntry(f.toPlainFile)).toVector
254+
sigFiles.map(f => ClassFileEntry(f.toPlainFile)).toVector
255255
}
256256
}
257257

@@ -275,7 +275,10 @@ final class CtSymClassPath(ctSym: java.nio.file.Path, release: Int) extends Clas
275275

276276
case class DirectoryClassPath(dir: JFile) extends JFileDirectoryLookup[BinaryFileEntry] with NoSourcePaths {
277277
override def findClass(className: String): Option[ClassRepresentation] =
278-
BinaryFileEntry.from(findClassFile(className), findTastyFile(className))
278+
val classfile = findClassFile(className)
279+
findTastyFile(className) match
280+
case Some(file) => Some(TastyFileEntry(file, classfile))
281+
case None => classfile.map(ClassFileEntry(_))
279282

280283
def findClassFile(className: String): Option[AbstractFile] = {
281284
val relativePath = FileUtils.dirPath(className)
@@ -292,10 +295,8 @@ case class DirectoryClassPath(dir: JFile) extends JFileDirectoryLookup[BinaryFil
292295
}
293296

294297
protected def createFileEntry(file: AbstractFile): BinaryFileEntry =
295-
val (classFile, tastyFile) =
296-
if file.isTasty then (Option(file.resolveSiblingWithExtension("class")), Some(file))
297-
else (Some(file), None)
298-
BinaryFileEntry(classFile, tastyFile)
298+
if file.isTasty then TastyFileEntry(file, Option(file.resolveSiblingWithExtension("class")))
299+
else ClassFileEntry(file)
299300

300301
protected def isMatchingFile(f: JFile): Boolean =
301302
f.isTasty || (f.isClass && f.classToTasty.isEmpty)

compiler/src/dotty/tools/dotc/classpath/VirtualDirectoryClassPath.scala

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,12 @@ case class VirtualDirectoryClassPath(dir: VirtualDirectory) extends ClassPath wi
4242
val pathSeq = FileUtils.dirPath(className).split(java.io.File.separator)
4343
val parentDir = lookupPath(dir)(pathSeq.init.toSeq, directory = true)
4444
if parentDir == null then return None
45-
else BinaryFileEntry.from(
46-
Option(lookupPath(parentDir)(pathSeq.last + ".class" :: Nil, directory = false)),
47-
Option(lookupPath(parentDir)(pathSeq.last + ".tasty" :: Nil, directory = false))
48-
)
45+
else
46+
val classfile = lookupPath(parentDir)(pathSeq.last + ".class" :: Nil, directory = false)
47+
val tasty = lookupPath(parentDir)(pathSeq.last + ".tasty" :: Nil, directory = false)
48+
if tasty != null then Some(TastyFileEntry(tasty, Option(classfile)))
49+
else if classfile != null then Some(ClassFileEntry(classfile))
50+
else None
4951

5052
def findClassFile(className: String): Option[AbstractFile] = {
5153
val pathSeq = FileUtils.dirPath(className).split(java.io.File.separator)
@@ -57,10 +59,8 @@ case class VirtualDirectoryClassPath(dir: VirtualDirectory) extends ClassPath wi
5759
private[dotty] def classes(inPackage: PackageName): Seq[BinaryFileEntry] = files(inPackage)
5860

5961
protected def createFileEntry(file: AbstractFile): BinaryFileEntry =
60-
val (classFile, tastyFile) =
61-
if file.isTasty then (Option(file.resolveSiblingWithExtension("class")), Some(file))
62-
else (Some(file), None)
63-
BinaryFileEntry(classFile, tastyFile)
62+
if file.isTasty then TastyFileEntry(file, Option(file.resolveSiblingWithExtension("class")))
63+
else ClassFileEntry(file)
6464

6565
protected def isMatchingFile(f: AbstractFile): Boolean =
6666
f.isTasty || (f.isClass && f.classToTasty.isEmpty)

compiler/src/dotty/tools/dotc/classpath/ZipAndJarFileLookupFactory.scala

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,17 @@ object ZipAndJarClassPathFactory extends ZipAndJarFileLookupFactory {
5151
override def findClass(className: String): Option[BinaryFileEntry] = {
5252
val (pkg, simpleClassName) = PackageNameUtils.separatePkgAndClassNames(className)
5353
val binaries = files(PackageName(pkg), simpleClassName + ".tasty", simpleClassName + ".class")
54-
BinaryFileEntry.from(
55-
binaries.find(_.classfile.isDefined).flatMap(_.classfile),
56-
binaries.find(_.tasty.isDefined).flatMap(_.tasty),
57-
)
54+
val classfile = binaries.find(_.classfile.isDefined).flatMap(_.classfile)
55+
binaries.find(_.tasty.isDefined).flatMap(_.tasty) match
56+
case Some(file) => Some(TastyFileEntry(file, classfile))
57+
case None => classfile.map(ClassFileEntry(_))
5858
}
5959

6060
override private[dotty] def classes(inPackage: PackageName): Seq[BinaryFileEntry] = files(inPackage)
6161

6262
override protected def createFileEntry(file: FileZipArchive#Entry): BinaryFileEntry =
63-
val (classFile, tastyFile) =
64-
if file.isTasty then (Option(file.resolveSiblingWithExtension("class")), Some(file))
65-
else (Some(file), None)
66-
BinaryFileEntry(classFile, tastyFile)
63+
if file.isTasty then TastyFileEntry(file, Option(file.resolveSiblingWithExtension("class")))
64+
else ClassFileEntry(file)
6765

6866
override protected def isRequiredFileType(file: AbstractFile): Boolean =
6967
file.isTasty || (file.isClass && file.classToTasty.isEmpty)
@@ -139,7 +137,7 @@ object ZipAndJarClassPathFactory extends ZipAndJarFileLookupFactory {
139137
override private[dotty] def classes(inPackage: PackageName): Seq[BinaryFileEntry] = cachedPackages.get(inPackage.dottedString) match {
140138
case None => Seq.empty
141139
case Some(PackageFileInfo(pkg, _)) =>
142-
(for (file <- pkg if file.isClass) yield BinaryFileEntry(file)).toSeq
140+
(for (file <- pkg if file.isClass) yield ClassFileEntry(file)).toSeq
143141
}
144142

145143
override private[dotty] def hasPackage(pkg: PackageName) = cachedPackages.contains(pkg.dottedString)

0 commit comments

Comments
 (0)