blob: 129c6b9feb25499c968da0ac554bc947363b0419 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/*
* Copyright (c) 2014 Contributor. All rights reserved.
*/
package dotty.tools.dotc.classpath
import scala.reflect.io.AbstractFile
import dotty.tools.io.ClassRepresentation
case class ClassPathEntries(packages: Seq[PackageEntry], classesAndSources: Seq[ClassRepresentation])
object ClassPathEntries {
import scala.language.implicitConversions
// to have working unzip method
implicit def entry2Tuple(entry: ClassPathEntries): (Seq[PackageEntry], Seq[ClassRepresentation]) = (entry.packages, entry.classesAndSources)
}
trait ClassFileEntry extends ClassRepresentation {
def file: AbstractFile
}
trait SourceFileEntry extends ClassRepresentation {
def file: AbstractFile
}
trait PackageEntry {
def name: String
}
private[dotty] case class ClassFileEntryImpl(file: AbstractFile) extends ClassFileEntry {
override def name = FileUtils.stripClassExtension(file.name) // class name
override def binary: Option[AbstractFile] = Some(file)
override def source: Option[AbstractFile] = None
}
private[dotty] case class SourceFileEntryImpl(file: AbstractFile) extends SourceFileEntry {
override def name = FileUtils.stripSourceExtension(file.name)
override def binary: Option[AbstractFile] = None
override def source: Option[AbstractFile] = Some(file)
}
private[dotty] case class ClassAndSourceFilesEntry(classFile: AbstractFile, srcFile: AbstractFile) extends ClassRepresentation {
override def name = FileUtils.stripClassExtension(classFile.name)
override def binary: Option[AbstractFile] = Some(classFile)
override def source: Option[AbstractFile] = Some(srcFile)
}
private[dotty] case class PackageEntryImpl(name: String) extends PackageEntry
private[dotty] trait NoSourcePaths {
def asSourcePathString: String = ""
private[dotty] def sources(inPackage: String): Seq[SourceFileEntry] = Seq.empty
}
private[dotty] trait NoClassPaths {
def findClassFile(className: String): Option[AbstractFile] = None
private[dotty] def classes(inPackage: String): Seq[ClassFileEntry] = Seq.empty
}
|