@@ -31,21 +31,23 @@ case class AggregateFlatClassPath(aggregates: Seq[FlatClassPath]) extends FlatCl
3131 }
3232
3333 override def findClass (className : String ): Option [ClassRepresentation ] = {
34- val (pkg, simpleClassName) = PackageNameUtils .separatePkgAndClassNames(className)
35-
3634 @ tailrec
37- def findEntry [ T <: ClassRepClassPathEntry ] (aggregates : Seq [FlatClassPath ], getEntries : FlatClassPath => Seq [ T ] ): Option [T ] =
35+ def findEntry (aggregates : Seq [FlatClassPath ], isSource : Boolean ): Option [ClassRepresentation ] =
3836 if (aggregates.nonEmpty) {
39- val entry = getEntries(aggregates.head).find(_.name == simpleClassName)
37+ val entry = aggregates.head.findClass(className) match {
38+ case s @ Some (_ : SourceFileEntry ) if isSource => s
39+ case s @ Some (_ : ClassFileEntry ) if ! isSource => s
40+ case _ => None
41+ }
4042 if (entry.isDefined) entry
41- else findEntry(aggregates.tail, getEntries )
43+ else findEntry(aggregates.tail, isSource )
4244 } else None
4345
44- val classEntry = findEntry(aggregates, classesGetter(pkg) )
45- val sourceEntry = findEntry(aggregates, sourcesGetter(pkg) )
46+ val classEntry = findEntry(aggregates, isSource = false )
47+ val sourceEntry = findEntry(aggregates, isSource = true )
4648
4749 (classEntry, sourceEntry) match {
48- case (Some (c), Some (s)) => Some (ClassAndSourceFilesEntry (c.file, s.file))
50+ case (Some (c : ClassFileEntry ), Some (s : SourceFileEntry )) => Some (ClassAndSourceFilesEntry (c.file, s.file))
4951 case (c @ Some (_), _) => c
5052 case (_, s) => s
5153 }
@@ -63,10 +65,10 @@ case class AggregateFlatClassPath(aggregates: Seq[FlatClassPath]) extends FlatCl
6365 }
6466
6567 override private [nsc] def classes (inPackage : String ): Seq [ClassFileEntry ] =
66- getDistinctEntries(classesGetter (inPackage))
68+ getDistinctEntries(_.classes (inPackage))
6769
6870 override private [nsc] def sources (inPackage : String ): Seq [SourceFileEntry ] =
69- getDistinctEntries(sourcesGetter (inPackage))
71+ getDistinctEntries(_.sources (inPackage))
7072
7173 override private [nsc] def list (inPackage : String ): FlatClassPathEntries = {
7274 val (packages, classesAndSources) = aggregates.map(_.list(inPackage)).unzip
@@ -121,9 +123,6 @@ case class AggregateFlatClassPath(aggregates: Seq[FlatClassPath]) extends FlatCl
121123 }
122124 entriesBuffer.toIndexedSeq
123125 }
124-
125- private def classesGetter (pkg : String ) = (cp : FlatClassPath ) => cp.classes(pkg)
126- private def sourcesGetter (pkg : String ) = (cp : FlatClassPath ) => cp.sources(pkg)
127126}
128127
129128object AggregateFlatClassPath {
0 commit comments