Skip to content

VirtualFile isn't so virtual: "Illegal char <<> at index 0" #23057

Open
@eed3si9n

Description

@eed3si9n

This was originally reported to Eval as eed3si9n/eval#15.

Compiler version

3.6.4

Minimized code

Here's a draft PR to Eval eed3si9n/eval#18 (GitHub Actions log). Eval internally creates

EvalSourceFile(srcName, startLine, contents)

  class EvalSourceFile(name: String, startLine: Int, contents: String)
      extends SourceFile(
        new VirtualFile(name, contents.getBytes(StandardCharsets.UTF_8)),
        contents.toArray[Char],
      ):
    override def lineToOffset(line: Int): Int = super.lineToOffset((line + startLine) max 0)
    override def offsetToLine(offset: Int): Int = super.offsetToLine(offset) - startLine
  end EvalSourceFile

https://github.com/eed3si9n/eval/blob/e1d49c668327bd389c1ee444b0c3b5a54ba94e89/src/main/scala-3/com/eed3si9n/eval/Eval.scala#L309C1-L316C21

where srcName is set to "<setting>".

Output

The test works fine on Linux and macOS, but it fails on Windows:

class dotty.tools.dotc.reporting.Diagnostic$Error at ?: invalid file path:
Illegal char <<> at index 0: <setting>

Expectation

  1. VirtualFile should be able to handle <setting> as the file name.
  2. There shouldn't be OS behavior differences in the virtual file name.

Notes

Somewhere along the file, something might be calling Paths.get(...)?

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions