diff --git a/compiler/src/dotty/tools/dotc/Run.scala b/compiler/src/dotty/tools/dotc/Run.scala index d4d420557eb4..906e927aff25 100644 --- a/compiler/src/dotty/tools/dotc/Run.scala +++ b/compiler/src/dotty/tools/dotc/Run.scala @@ -11,7 +11,7 @@ import Denotations.Denotation import typer.Typer import typer.ImportInfo.withRootImports import Decorators._ -import io.{AbstractFile, VirtualFile} +import io.AbstractFile import Phases.unfusedPhases import util._ diff --git a/compiler/src/dotty/tools/dotc/interactive/InteractiveDriver.scala b/compiler/src/dotty/tools/dotc/interactive/InteractiveDriver.scala index 21c321b836a6..132ff162be61 100644 --- a/compiler/src/dotty/tools/dotc/interactive/InteractiveDriver.scala +++ b/compiler/src/dotty/tools/dotc/interactive/InteractiveDriver.scala @@ -14,7 +14,7 @@ import java.util.zip._ import scala.collection._ import scala.io.Codec -import dotty.tools.io.{ AbstractFile, VirtualFile } +import dotty.tools.io.AbstractFile import ast.{Trees, tpd} import core._, core.Decorators._ diff --git a/compiler/src/dotty/tools/dotc/util/SourceFile.scala b/compiler/src/dotty/tools/dotc/util/SourceFile.scala index fc1e3b365a54..b4c65fd64244 100644 --- a/compiler/src/dotty/tools/dotc/util/SourceFile.scala +++ b/compiler/src/dotty/tools/dotc/util/SourceFile.scala @@ -15,6 +15,7 @@ import scala.collection.mutable import scala.collection.mutable.ArrayBuffer import scala.util.chaining.given +import java.io.File.separator import java.nio.charset.StandardCharsets import java.nio.file.{FileSystemException, NoSuchFileException} import java.util.Optional @@ -217,8 +218,11 @@ object SourceFile { implicit def fromContext(using Context): SourceFile = ctx.source + /** A source file with an underlying virtual file. The name is taken as a file system path + * with the local separator converted to "/". The last element of the path will be the simple name of the file. + */ def virtual(name: String, content: String, maybeIncomplete: Boolean = false) = - SourceFile(new VirtualFile(name, content.getBytes(StandardCharsets.UTF_8)), content.toCharArray) + SourceFile(new VirtualFile(name.replace(separator, "/"), content.getBytes(StandardCharsets.UTF_8)), content.toCharArray) .tap(_._maybeInComplete = maybeIncomplete) /** Returns the relative path of `source` within the `reference` path diff --git a/compiler/src/dotty/tools/io/VirtualDirectory.scala b/compiler/src/dotty/tools/io/VirtualDirectory.scala index c66e28011821..157f63a2ac1a 100644 --- a/compiler/src/dotty/tools/io/VirtualDirectory.scala +++ b/compiler/src/dotty/tools/io/VirtualDirectory.scala @@ -56,7 +56,7 @@ extends AbstractFile { override def fileNamed(name: String): AbstractFile = Option(lookupName(name, directory = false)) getOrElse { - val newFile = new VirtualFile(name, path + '/' + name) + val newFile = new VirtualFile(name, s"$path/$name") files(name) = newFile newFile } diff --git a/scaladoc/src/dotty/tools/scaladoc/DocContext.scala b/scaladoc/src/dotty/tools/scaladoc/DocContext.scala index bd89b3075ce7..36008d6e7f28 100644 --- a/scaladoc/src/dotty/tools/scaladoc/DocContext.scala +++ b/scaladoc/src/dotty/tools/scaladoc/DocContext.scala @@ -8,7 +8,6 @@ import java.nio.file.Paths import collection.JavaConverters._ import dotty.tools.scaladoc.site.StaticSiteContext import dotty.tools.dotc.core.Contexts._ -import dotty.tools.io.VirtualFile import dotty.tools.dotc.util.SourceFile import dotty.tools.dotc.util.SourcePosition import dotty.tools.dotc.util.Spans