33 */
44package dotty .tools .dotc .classpath
55
6- import java .io .File
6+ import java .io .{ File => JFile }
77import java .net .{URI , URL }
88import java .nio .file .{FileSystems , Files , SimpleFileVisitor }
99import java .util .function .IntFunction
1010import java .util
1111import java .util .Comparator
1212
13- import dotty .tools .io .{AbstractFile , PlainFile , ClassPath , ClassRepresentation , PlainNioFile }
13+ import dotty .tools .io .{AbstractFile , PlainFile , ClassPath , ClassRepresentation }
1414import FileUtils ._
1515import scala .collection .JavaConverters ._
1616
@@ -86,15 +86,15 @@ trait DirectoryLookup[FileEntryType <: ClassRepresentation] extends ClassPath {
8686}
8787
8888trait JFileDirectoryLookup [FileEntryType <: ClassRepresentation ] extends DirectoryLookup [FileEntryType ] {
89- type F = File
89+ type F = JFile
9090
91- protected def emptyFiles : Array [File ] = Array .empty
92- protected def getSubDir (packageDirName : String ): Option [File ] = {
93- val packageDir = new File (dir, packageDirName)
91+ protected def emptyFiles : Array [JFile ] = Array .empty
92+ protected def getSubDir (packageDirName : String ): Option [JFile ] = {
93+ val packageDir = new JFile (dir, packageDirName)
9494 if (packageDir.exists && packageDir.isDirectory) Some (packageDir)
9595 else None
9696 }
97- protected def listChildren (dir : File , filter : Option [File => Boolean ]): Array [File ] = {
97+ protected def listChildren (dir : JFile , filter : Option [JFile => Boolean ]): Array [JFile ] = {
9898 val listing = filter match {
9999 case Some (f) => dir.listFiles(mkFileFilter(f))
100100 case None => dir.listFiles()
@@ -112,15 +112,15 @@ trait JFileDirectoryLookup[FileEntryType <: ClassRepresentation] extends Directo
112112 // Note this behaviour can be enabled in javac with `javac -XDsortfiles`, but that's only
113113 // intended to improve determinism of the compiler for compiler hackers.
114114 java.util.Arrays .sort(listing,
115- new java.util.Comparator [File ] {
116- def compare (o1 : File , o2 : File ) = o1.getName.compareTo(o2.getName)
115+ new java.util.Comparator [JFile ] {
116+ def compare (o1 : JFile , o2 : JFile ) = o1.getName.compareTo(o2.getName)
117117 })
118118 listing
119119 } else Array ()
120120 }
121- protected def getName (f : File ): String = f.getName
122- protected def toAbstractFile (f : File ): AbstractFile = new PlainFile (new dotty.tools.io.File (f))
123- protected def isPackage (f : File ): Boolean = f.isPackage
121+ protected def getName (f : JFile ): String = f.getName
122+ protected def toAbstractFile (f : JFile ): AbstractFile = new PlainFile (new dotty.tools.io.File (f.toPath ))
123+ protected def isPackage (f : JFile ): Boolean = f.isPackage
124124
125125 assert(dir != null , " Directory file in DirectoryFileLookup cannot be null" )
126126
@@ -178,7 +178,7 @@ final class JrtClassPath(fs: java.nio.file.FileSystem) extends ClassPath with No
178178 else {
179179 packageToModuleBases.getOrElse(inPackage, Nil ).flatMap(x =>
180180 Files .list(x.resolve(inPackage.replace('.' , '/' ))).iterator().asScala.filter(_.getFileName.toString.endsWith(" .class" ))).map(x =>
181- ClassFileEntryImpl (new PlainNioFile (x ))).toVector
181+ ClassFileEntryImpl (new PlainFile ( new dotty.tools.io. File (x) ))).toVector
182182 }
183183 }
184184
@@ -197,49 +197,49 @@ final class JrtClassPath(fs: java.nio.file.FileSystem) extends ClassPath with No
197197 val inPackage = packageOf(className)
198198 packageToModuleBases.getOrElse(inPackage, Nil ).iterator.flatMap{x =>
199199 val file = x.resolve(className.replace('.' , '/' ) + " .class" )
200- if (Files .exists(file)) new PlainNioFile ( file) :: Nil else Nil
200+ if (Files .exists(file)) new PlainFile ( new dotty.tools.io. File ( file) ) :: Nil else Nil
201201 }.take(1 ).toList.headOption
202202 }
203203 }
204204 private def packageOf (dottedClassName : String ): String =
205205 dottedClassName.substring(0 , dottedClassName.lastIndexOf(" ." ))
206206}
207207
208- case class DirectoryClassPath (dir : File ) extends JFileDirectoryLookup [ClassFileEntryImpl ] with NoSourcePaths {
208+ case class DirectoryClassPath (dir : JFile ) extends JFileDirectoryLookup [ClassFileEntryImpl ] with NoSourcePaths {
209209 override def findClass (className : String ): Option [ClassRepresentation ] = findClassFile(className) map ClassFileEntryImpl
210210
211211 def findClassFile (className : String ): Option [AbstractFile ] = {
212212 val relativePath = FileUtils .dirPath(className)
213- val classFile = new File (s " $dir/ $relativePath.class " )
213+ val classFile = new JFile (s " $dir/ $relativePath.class " )
214214 if (classFile.exists) {
215- val wrappedClassFile = new dotty.tools.io.File (classFile)
215+ val wrappedClassFile = new dotty.tools.io.File (classFile.toPath )
216216 val abstractClassFile = new PlainFile (wrappedClassFile)
217217 Some (abstractClassFile)
218218 } else None
219219 }
220220
221221 protected def createFileEntry (file : AbstractFile ): ClassFileEntryImpl = ClassFileEntryImpl (file)
222- protected def isMatchingFile (f : File ): Boolean = f.isClass
222+ protected def isMatchingFile (f : JFile ): Boolean = f.isClass
223223
224224 private [dotty] def classes (inPackage : String ): Seq [ClassFileEntry ] = files(inPackage)
225225}
226226
227- case class DirectorySourcePath (dir : File ) extends JFileDirectoryLookup [SourceFileEntryImpl ] with NoClassPaths {
227+ case class DirectorySourcePath (dir : JFile ) extends JFileDirectoryLookup [SourceFileEntryImpl ] with NoClassPaths {
228228 def asSourcePathString : String = asClassPathString
229229
230230 protected def createFileEntry (file : AbstractFile ): SourceFileEntryImpl = SourceFileEntryImpl (file)
231- protected def isMatchingFile (f : File ): Boolean = endsScalaOrJava(f.getName)
231+ protected def isMatchingFile (f : JFile ): Boolean = endsScalaOrJava(f.getName)
232232
233233 override def findClass (className : String ): Option [ClassRepresentation ] = findSourceFile(className) map SourceFileEntryImpl
234234
235235 private def findSourceFile (className : String ): Option [AbstractFile ] = {
236236 val relativePath = FileUtils .dirPath(className)
237237 val sourceFile = Stream (" scala" , " java" )
238- .map(ext => new File (s " $dir/ $relativePath. $ext" ))
238+ .map(ext => new JFile (s " $dir/ $relativePath. $ext" ))
239239 .collectFirst { case file if file.exists() => file }
240240
241241 sourceFile.map { file =>
242- val wrappedSourceFile = new dotty.tools.io.File (file)
242+ val wrappedSourceFile = new dotty.tools.io.File (file.toPath )
243243 val abstractSourceFile = new PlainFile (wrappedSourceFile)
244244 abstractSourceFile
245245 }
0 commit comments