diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-03-22 21:25:35 +0100 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2016-03-22 21:28:27 +0100 |
commit | 6cb50acfb5ee4df342e83d8505116d4607f45d1c (patch) | |
tree | bd37410452b625a74c5337f9a5509ae8451b5189 /src/compiler/scala/tools/nsc/classpath/AggregateFlatClassPath.scala | |
parent | ad48e5918081c679546f50b6f52dd8e0813754e7 (diff) | |
download | scala-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.scala | 10 |
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) |