summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-03-22 21:25:35 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2016-03-22 21:28:27 +0100
commit6cb50acfb5ee4df342e83d8505116d4607f45d1c (patch)
treebd37410452b625a74c5337f9a5509ae8451b5189 /src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala
parentad48e5918081c679546f50b6f52dd8e0813754e7 (diff)
downloadscala-6cb50acfb5ee4df342e83d8505116d4607f45d1c.tar.gz
scala-6cb50acfb5ee4df342e83d8505116d4607f45d1c.tar.bz2
scala-6cb50acfb5ee4df342e83d8505116d4607f45d1c.zip
Enable flat classpath by default
Implements VirtualDirectoryFlatClassPath, which is required for the presentation compiler created for the repl's tab-completion. Various minor cleanups in the flat classpath implementation.
Diffstat (limited to 'src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala')
-rw-r--r--src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala b/src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala
index 3f06264e3c..7bfb3240eb 100644
--- a/src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala
+++ b/src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala
@@ -18,7 +18,6 @@ import scala.tools.nsc.util.ClassRepresentation
* @param aggregates classpath instances containing entries which this class processes
*/
case class AggregateFlatClassPath(aggregates: Seq[FlatClassPath]) extends FlatClassPath {
-
override def findClassFile(className: String): Option[AbstractFile] = {
@tailrec
def find(aggregates: Seq[FlatClassPath]): Option[AbstractFile] =
@@ -37,8 +36,7 @@ case class AggregateFlatClassPath(aggregates: Seq[FlatClassPath]) extends FlatCl
@tailrec
def findEntry[T <: ClassRepClassPathEntry](aggregates: Seq[FlatClassPath], getEntries: FlatClassPath => Seq[T]): Option[T] =
if (aggregates.nonEmpty) {
- val entry = getEntries(aggregates.head)
- .find(_.name == simpleClassName)
+ val entry = getEntries(aggregates.head).find(_.name == simpleClassName)
if (entry.isDefined) entry
else findEntry(aggregates.tail, getEntries)
} else None
@@ -46,7 +44,11 @@ case class AggregateFlatClassPath(aggregates: Seq[FlatClassPath]) extends FlatCl
val classEntry = findEntry(aggregates, classesGetter(pkg))
val sourceEntry = findEntry(aggregates, sourcesGetter(pkg))
- mergeClassesAndSources(classEntry.toList, sourceEntry.toList).headOption
+ (classEntry, sourceEntry) match {
+ case (Some(c), Some(s)) => Some(ClassAndSourceFilesEntry(c.file, s.file))
+ case (c @ Some(_), _) => c
+ case (_, s) => s
+ }
}
override def asURLs: Seq[URL] = aggregates.flatMap(_.asURLs)