diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2017-04-11 17:45:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-11 17:45:55 +0200 |
commit | 65dc7ad151a38158a45c5836d5e1f0fd48b8e396 (patch) | |
tree | 7d1e2c9d1f848525a7d406e6046559081e70f675 /compiler/src/dotty/tools/dotc/classpath/ClassPath.scala | |
parent | f13e3a43d227933ce644f2503f658ea436ea11b4 (diff) | |
parent | 223f32b7658a77fb2ad6b30ad247c0e27204b558 (diff) | |
download | dotty-65dc7ad151a38158a45c5836d5e1f0fd48b8e396.tar.gz dotty-65dc7ad151a38158a45c5836d5e1f0fd48b8e396.tar.bz2 dotty-65dc7ad151a38158a45c5836d5e1f0fd48b8e396.zip |
Merge pull request #2191 from dotty-staging/sync-classpath-scalac
Fix #2186: Synchronize classpath handling with Scala 2.12
Diffstat (limited to 'compiler/src/dotty/tools/dotc/classpath/ClassPath.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/classpath/ClassPath.scala | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/compiler/src/dotty/tools/dotc/classpath/ClassPath.scala b/compiler/src/dotty/tools/dotc/classpath/ClassPath.scala new file mode 100644 index 000000000..129c6b9fe --- /dev/null +++ b/compiler/src/dotty/tools/dotc/classpath/ClassPath.scala @@ -0,0 +1,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 +} |