Skip to content

Commit cf73804

Browse files
committed
refactor
1 parent a8b357b commit cf73804

File tree

4 files changed

+20
-29
lines changed

4 files changed

+20
-29
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ case class AggregateClassPath(aggregates: Seq[ClassPath]) extends ClassPath {
4646
val sourceEntry = findEntry(isSource = true)
4747

4848
(classEntry, sourceEntry) match {
49-
case (Some(c: BinaryFileEntry), Some(s: SourceFileEntry)) => Some(ClassAndSourceFilesEntry(c, s.file))
49+
case (Some(c: BinaryFileEntry), Some(s: SourceFileEntry)) => Some(BinaryAndSourceFilesEntry(c, s))
5050
case (c @ Some(_), _) => c
5151
case (_, s) => s
5252
}
@@ -128,17 +128,17 @@ case class AggregateClassPath(aggregates: Seq[ClassPath]) extends ClassPath {
128128
val existing = mergedEntries(index)
129129

130130
if !existing.binary.isDefined && entry.binary.isDefined then
131-
mergedEntries(index) = ClassAndSourceFilesEntry(entry, existing.source.get)
131+
mergedEntries(index) = BinaryAndSourceFilesEntry(entry, existing)
132132
else if
133133
existing.classfile.isDefined && !existing.tasty.isDefined
134134
&& !entry.classfile.isDefined && entry.tasty.isDefined
135135
then
136136
mergedEntries(index) = existing.source match
137-
case Some(source) => ClassAndSourceFilesEntry(entry, source)
137+
case Some(source) => BinaryAndSourceFilesEntry(entry, existing)
138138
case None => entry
139139

140140
if (existing.source.isEmpty && entry.source.isDefined)
141-
mergedEntries(index) = ClassAndSourceFilesEntry(existing, entry.source.get)
141+
mergedEntries(index) = BinaryAndSourceFilesEntry(existing, entry)
142142
}
143143
else {
144144
indices(name) = count

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

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ trait BinaryFileEntry extends ClassRepresentation {
1919
def binary: Option[AbstractFile] = Some(file)
2020
}
2121

22-
trait SourceFileEntry extends ClassRepresentation {
23-
def file: AbstractFile
24-
}
25-
2622
case class PackageName(dottedString: String) {
2723
val dirPathTrailingSlashJar: String = FileUtils.dirPathInJar(dottedString) + "/"
2824

@@ -64,7 +60,7 @@ private[dotty] case class TastyFileEntry(file: AbstractFile, classfile: Option[A
6460
def source: Option[AbstractFile] = None
6561
}
6662

67-
private[dotty] case class SourceFileEntryImpl(file: AbstractFile) extends SourceFileEntry {
63+
private[dotty] case class SourceFileEntry(file: AbstractFile) extends ClassRepresentation {
6864
final def fileName: String = file.name
6965
def name: String = FileUtils.stripSourceExtension(file.name)
7066
def binary: Option[AbstractFile] = None
@@ -73,17 +69,16 @@ private[dotty] case class SourceFileEntryImpl(file: AbstractFile) extends Source
7369
def source: Option[AbstractFile] = Some(file)
7470
}
7571

76-
private[dotty] case class ClassAndSourceFilesEntry(classfile: Option[AbstractFile], tasty: Option[AbstractFile], srcFile: AbstractFile) extends ClassRepresentation {
77-
assert(classfile.isDefined || tasty.isDefined)
78-
assert(classfile.map(_.`extension` == "class").getOrElse(true), classfile)
79-
assert(tasty.map(_.`extension` == "tasty").getOrElse(true), tasty)
80-
81-
private def classFile = tasty.getOrElse(classfile.get)
82-
83-
final def fileName: String = classFile.name
84-
def name: String = FileUtils.stripClassExtension(classFile.name)
85-
def binary: Option[AbstractFile] = tasty.orElse(classfile)
86-
def source: Option[AbstractFile] = Some(srcFile)
72+
private[dotty] case class BinaryAndSourceFilesEntry(binaryEntry: ClassRepresentation, sourceEntry: ClassRepresentation) extends ClassRepresentation {
73+
// TODO set these types in constructor
74+
assert(binaryEntry.isInstanceOf[BinaryFileEntry])
75+
assert(sourceEntry.isInstanceOf[SourceFileEntry])
76+
final def fileName: String = binaryEntry.fileName
77+
def name: String = binaryEntry.name
78+
def binary: Option[AbstractFile] = binaryEntry.binary
79+
def classfile: Option[AbstractFile] = binaryEntry.classfile
80+
def tasty: Option[AbstractFile] = binaryEntry.tasty
81+
def source: Option[AbstractFile] = sourceEntry.source
8782
}
8883

8984
private[dotty] case class PackageEntryImpl(name: String) extends PackageEntry
@@ -97,7 +92,3 @@ private[dotty] trait NoClassPaths {
9792
def findClassFile(className: String): Option[AbstractFile] = None
9893
private[dotty] def classes(inPackage: PackageName): Seq[BinaryFileEntry] = Seq.empty
9994
}
100-
private[dotty] object ClassAndSourceFilesEntry {
101-
def apply(binary: ClassRepresentation, source: AbstractFile): ClassRepresentation =
102-
ClassAndSourceFilesEntry(binary.classfile, binary.tasty, source)
103-
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,13 @@ case class DirectoryClassPath(dir: JFile) extends JFileDirectoryLookup[BinaryFil
304304
private[dotty] def classes(inPackage: PackageName): Seq[BinaryFileEntry] = files(inPackage)
305305
}
306306

307-
case class DirectorySourcePath(dir: JFile) extends JFileDirectoryLookup[SourceFileEntryImpl] with NoClassPaths {
307+
case class DirectorySourcePath(dir: JFile) extends JFileDirectoryLookup[SourceFileEntry] with NoClassPaths {
308308
def asSourcePathString: String = asClassPathString
309309

310-
protected def createFileEntry(file: AbstractFile): SourceFileEntryImpl = SourceFileEntryImpl(file)
310+
protected def createFileEntry(file: AbstractFile): SourceFileEntry = SourceFileEntry(file)
311311
protected def isMatchingFile(f: JFile): Boolean = endsScalaOrJava(f.getName)
312312

313-
override def findClass(className: String): Option[ClassRepresentation] = findSourceFile(className) map SourceFileEntryImpl.apply
313+
override def findClass(className: String): Option[ClassRepresentation] = findSourceFile(className) map SourceFileEntry.apply
314314

315315
private def findSourceFile(className: String): Option[AbstractFile] = {
316316
val relativePath = FileUtils.dirPath(className)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ object ZipAndJarClassPathFactory extends ZipAndJarFileLookupFactory {
168168
*/
169169
object ZipAndJarSourcePathFactory extends ZipAndJarFileLookupFactory {
170170
private case class ZipArchiveSourcePath(zipFile: File)
171-
extends ZipArchiveFileLookup[SourceFileEntryImpl]
171+
extends ZipArchiveFileLookup[SourceFileEntry]
172172
with NoClassPaths {
173173

174174
def release: Option[String] = None
@@ -177,7 +177,7 @@ object ZipAndJarSourcePathFactory extends ZipAndJarFileLookupFactory {
177177

178178
override private[dotty] def sources(inPackage: PackageName): Seq[SourceFileEntry] = files(inPackage)
179179

180-
override protected def createFileEntry(file: FileZipArchive#Entry): SourceFileEntryImpl = SourceFileEntryImpl(file)
180+
override protected def createFileEntry(file: FileZipArchive#Entry): SourceFileEntry = SourceFileEntry(file)
181181
override protected def isRequiredFileType(file: AbstractFile): Boolean = file.isScalaOrJavaSource
182182
}
183183

0 commit comments

Comments
 (0)