diff --git a/compiler/src/dotty/tools/dotc/report.scala b/compiler/src/dotty/tools/dotc/report.scala index 05020700f11b..48db6088ab0b 100644 --- a/compiler/src/dotty/tools/dotc/report.scala +++ b/compiler/src/dotty/tools/dotc/report.scala @@ -132,8 +132,6 @@ object report: case Nil => pos recur(pos.sourcePos, tpd.enclosingInlineds) - private object messageRendering extends MessageRendering - // Should only be called from Run#enrichErrorMessage. def enrichErrorMessage(errorMessage: String)(using Context): String = if ctx.settings.YnoEnrichErrorMessages.value then errorMessage diff --git a/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala b/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala index 45caf480f65e..6bec25c89997 100644 --- a/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala +++ b/compiler/src/dotty/tools/dotc/reporting/MessageRendering.scala @@ -8,6 +8,7 @@ import java.lang.System.{lineSeparator => EOL} import core.Contexts.* import core.Decorators.* +import io.AbstractFile import printing.Highlighting.{Blue, Red, Yellow} import printing.SyntaxHighlighting import Diagnostic.* @@ -158,9 +159,12 @@ trait MessageRendering { .mkString(EOL) } + // file.path or munge it to normalize for testing + protected def renderPath(file: AbstractFile): String = file.path + /** The source file path, line and column numbers from the given SourcePosition */ protected def posFileStr(pos: SourcePosition): String = - val path = pos.source.file.path + val path = renderPath(pos.source.file) if pos.exists then s"$path:${pos.line + 1}:${pos.column}" else path /** The separator between errors containing the source file and error type diff --git a/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala b/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala index f68bc951a1df..7c3737113099 100644 --- a/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala +++ b/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala @@ -1,12 +1,19 @@ -package dotty.tools +package dotty +package tools package dotc package reporting -import scala.language.unsafeNulls -import java.io.{BufferedReader, FileInputStream, FileOutputStream, FileReader, PrintStream, PrintWriter, StringReader, StringWriter, File as JFile} +import java.io.{File as JFile, *} +import java.nio.file.Files.readAllLines import java.text.SimpleDateFormat import java.util.Date + +import core.Contexts.* import core.Decorators.* +import interfaces.Diagnostic.{ERROR, WARNING} +import io.AbstractFile +import util.SourcePosition +import Diagnostic.* import scala.collection.mutable import scala.jdk.CollectionConverters.* @@ -29,13 +36,17 @@ extends Reporter with UniqueMessagePositions with HideNonSensicalMessages with M final def messages: Iterator[String] = _messageBuf.iterator protected final val _consoleBuf = new StringWriter - protected final val _consoleReporter = new ConsoleReporter(null, new PrintWriter(_consoleBuf)) + protected final val _consoleReporter = new ConsoleReporter(null, new PrintWriter(_consoleBuf)): + override protected def renderPath(file: AbstractFile): String = TestReporter.renderPath(file) + final def consoleOutput: String = _consoleBuf.toString private var _skip: Boolean = false final def setSkip(): Unit = _skip = true final def skipped: Boolean = _skip + override protected def renderPath(file: AbstractFile): String = TestReporter.renderPath(file) + protected final def inlineInfo(pos: SourcePosition)(using Context): String = if (pos.exists) { if (pos.outer.exists) @@ -149,10 +160,16 @@ object TestReporter { Properties.rerunFailed && failedTestsFile.exists() && failedTestsFile.isFile - )(java.nio.file.Files.readAllLines(failedTestsFile.toPath).asScala.toList) + )(readAllLines(failedTestsFile.toPath).asScala.toList) def writeFailedTests(tests: List[String]): Unit = initLog() tests.foreach(failed => failedTestsWriter.println(failed)) failedTestsWriter.flush() + + def renderPath(file: AbstractFile): String = + if JFile.separatorChar == '\\' then + file.path.replace('\\', '/') + else + file.path } diff --git a/compiler/test/dotty/tools/vulpix/ParallelTesting.scala b/compiler/test/dotty/tools/vulpix/ParallelTesting.scala index bf04ac5a491d..8c2087388903 100644 --- a/compiler/test/dotty/tools/vulpix/ParallelTesting.scala +++ b/compiler/test/dotty/tools/vulpix/ParallelTesting.scala @@ -667,7 +667,7 @@ trait ParallelTesting extends RunnerOrchestration: checkFile(testSource).foreach(diffTest(testSource, _, reporterOutputLines(reporters), reporters, logger)) private def reporterOutputLines(reporters: Seq[TestReporter]): List[String] = - reporters.flatMap(_.consoleOutput.split("\n")).toList + reporters.flatMap(_.consoleOutput.linesIterator).toList private[ParallelTesting] def executeTestSuite(): this.type = { assert(testSourcesCompleted == 0, "not allowed to re-use a `CompileRun`") diff --git a/tests/neg-custom-args/captures/cc-this2.check b/tests/neg-custom-args/captures/cc-this2.check index d2f87a131791..7d4062ab444f 100644 --- a/tests/neg-custom-args/captures/cc-this2.check +++ b/tests/neg-custom-args/captures/cc-this2.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-custom-args/captures/cc-this2/D_2.scala:2:6 -------------------------------------------------------- 2 |class D extends C: // error |^ diff --git a/tests/neg-macros/annot-crash.check b/tests/neg-macros/annot-crash.check index 16eb0f68bc44..9de0a5db0adf 100644 --- a/tests/neg-macros/annot-crash.check +++ b/tests/neg-macros/annot-crash.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-crash/Test_2.scala:1:0 ---------------------------------------------------------------- 1 |@crash // error |^^^^^^ diff --git a/tests/neg-macros/annot-empty-result.check b/tests/neg-macros/annot-empty-result.check index 6d43c19664cb..a6b7e15450c8 100644 --- a/tests/neg-macros/annot-empty-result.check +++ b/tests/neg-macros/annot-empty-result.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-empty-result/Test_2.scala:5:2 --------------------------------------------------------- 5 | @nilAnnot // error | ^^^^^^^^^ diff --git a/tests/neg-macros/annot-error-annot.check b/tests/neg-macros/annot-error-annot.check index f150b4561e2c..2924e67a1227 100644 --- a/tests/neg-macros/annot-error-annot.check +++ b/tests/neg-macros/annot-error-annot.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-error-annot/Test_2.scala:17:6 --------------------------------------------------------- 16 |@error 17 |class cGlobal // error diff --git a/tests/neg-macros/annot-ill-abort.check b/tests/neg-macros/annot-ill-abort.check index b969b3ad4313..25c3f710f3ca 100644 --- a/tests/neg-macros/annot-ill-abort.check +++ b/tests/neg-macros/annot-ill-abort.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-ill-abort/Test_2.scala:1:0 ------------------------------------------------------------ 1 |@crash // error |^^^^^^ diff --git a/tests/neg-macros/annot-mod-class-add-top-method.check b/tests/neg-macros/annot-mod-class-add-top-method.check index 28fb93bb29db..73bd71926b91 100644 --- a/tests/neg-macros/annot-mod-class-add-top-method.check +++ b/tests/neg-macros/annot-mod-class-add-top-method.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-mod-class-add-top-method/Test_2.scala:1:0 --------------------------------------------- 1 |@addTopLevelMethod // error |^^^^^^^^^^^^^^^^^^ diff --git a/tests/neg-macros/annot-mod-class-add-top-val.check b/tests/neg-macros/annot-mod-class-add-top-val.check index bc21173923f1..14537b1d9ab9 100644 --- a/tests/neg-macros/annot-mod-class-add-top-val.check +++ b/tests/neg-macros/annot-mod-class-add-top-val.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-mod-class-add-top-val/Test_2.scala:1:0 ------------------------------------------------ 1 |@addTopLevelVal // error |^^^^^^^^^^^^^^^ diff --git a/tests/neg-macros/annot-on-type.check b/tests/neg-macros/annot-on-type.check index 3844c3eeebe9..3841aca5a8ee 100644 --- a/tests/neg-macros/annot-on-type.check +++ b/tests/neg-macros/annot-on-type.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-on-type/Test_2.scala:6:7 -------------------------------------------------------------- 5 | @voidAnnot 6 | type C // error diff --git a/tests/neg-macros/annot-result-owner.check b/tests/neg-macros/annot-result-owner.check index e2209998579c..7adeeefe1868 100644 --- a/tests/neg-macros/annot-result-owner.check +++ b/tests/neg-macros/annot-result-owner.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/annot-result-owner/Test_2.scala:1:0 --------------------------------------------------------- 1 |@insertVal // error |^^^^^^^^^^ diff --git a/tests/neg-macros/beta-reduce-inline-result.check b/tests/neg-macros/beta-reduce-inline-result.check index 7b615feef308..ee773bbec7c7 100644 --- a/tests/neg-macros/beta-reduce-inline-result.check +++ b/tests/neg-macros/beta-reduce-inline-result.check @@ -1,4 +1,3 @@ - -- [E007] Type Mismatch Error: tests/neg-macros/beta-reduce-inline-result/Test_2.scala:11:41 --------------------------- 11 | val x2: 4 = Macros.betaReduce(dummy1)(3) // error | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/neg-macros/delegate-match-1.check b/tests/neg-macros/delegate-match-1.check index 93b20beba183..89869725709f 100644 --- a/tests/neg-macros/delegate-match-1.check +++ b/tests/neg-macros/delegate-match-1.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/delegate-match-1/Test_2.scala:6:2 ----------------------------------------------------------- 6 | f // error | ^ diff --git a/tests/neg-macros/delegate-match-2.check b/tests/neg-macros/delegate-match-2.check index e26742452b5b..d8481d5e7e3c 100644 --- a/tests/neg-macros/delegate-match-2.check +++ b/tests/neg-macros/delegate-match-2.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/delegate-match-2/Test_2.scala:5:2 ----------------------------------------------------------- 5 | f // error | ^ diff --git a/tests/neg-macros/delegate-match-3.check b/tests/neg-macros/delegate-match-3.check index 2b6fda278fda..0d1d5d6cf3c4 100644 --- a/tests/neg-macros/delegate-match-3.check +++ b/tests/neg-macros/delegate-match-3.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/delegate-match-3/Test_2.scala:3:2 ----------------------------------------------------------- 3 | f // error | ^ diff --git a/tests/neg-macros/i11386.check b/tests/neg-macros/i11386.check index f74ea5b7ff20..c017b275855d 100644 --- a/tests/neg-macros/i11386.check +++ b/tests/neg-macros/i11386.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i11386/Test_2.scala:6:10 -------------------------------------------------------------------- 6 | dummy(0) // error | ^ diff --git a/tests/neg-macros/i13991.check b/tests/neg-macros/i13991.check index ca9f924a6693..763b1db753ff 100644 --- a/tests/neg-macros/i13991.check +++ b/tests/neg-macros/i13991.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i13991/Test_2.scala:6:5 --------------------------------------------------------------------- 6 | v2 // error | ^^ diff --git a/tests/neg-macros/i16582.check b/tests/neg-macros/i16582.check index 546d0b7efaf3..462811fb8103 100644 --- a/tests/neg-macros/i16582.check +++ b/tests/neg-macros/i16582.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i16582/Test_2.scala:6:27 -------------------------------------------------------------------- 6 | val o2 = ownerDoesNotWork(2) // error | ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/neg-macros/i16835.check b/tests/neg-macros/i16835.check index fb02f3c7f13f..d77d53677600 100644 --- a/tests/neg-macros/i16835.check +++ b/tests/neg-macros/i16835.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i16835/Test_2.scala:1:17 -------------------------------------------------------------------- 1 |def test: Unit = foo // error | ^^^ diff --git a/tests/neg-macros/i18113.check b/tests/neg-macros/i18113.check index 7a7a7069bd92..89942493b6dc 100644 --- a/tests/neg-macros/i18113.check +++ b/tests/neg-macros/i18113.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i18113/Test_2.scala:7:8 --------------------------------------------------------------------- 7 | X.test(ref) // error | ^^^^^^^^^^^ diff --git a/tests/neg-macros/i18113b.check b/tests/neg-macros/i18113b.check index dd2091eba09f..d256c4060f12 100644 --- a/tests/neg-macros/i18113b.check +++ b/tests/neg-macros/i18113b.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i18113b/Test_2.scala:7:8 -------------------------------------------------------------------- 7 | X.test(ref) // error | ^^^^^^^^^^^ diff --git a/tests/neg-macros/i21916.check b/tests/neg-macros/i21916.check index 58a8ac43782a..3b9a3e229945 100644 --- a/tests/neg-macros/i21916.check +++ b/tests/neg-macros/i21916.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i21916/Test_2.scala:3:27 -------------------------------------------------------------------- 3 |@main def Test = Macro.test() // error | ^^^^^^^^^^^^ diff --git a/tests/neg-macros/i23008.check b/tests/neg-macros/i23008.check index 52e2c42d24b0..9b931c0f95ee 100644 --- a/tests/neg-macros/i23008.check +++ b/tests/neg-macros/i23008.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i23008/Test_2.scala:1:24 -------------------------------------------------------------------- 1 |@main def Test = Macros.buildString // error | ^^^^^^^^^^^^^^^^^^ diff --git a/tests/neg-macros/i6432.check b/tests/neg-macros/i6432.check index 2ea6f3ba0300..d9206a1ffab7 100644 --- a/tests/neg-macros/i6432.check +++ b/tests/neg-macros/i6432.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i6432/Test_2.scala:4:6 ---------------------------------------------------------------------- 4 | foo"abc${"123"}xyz${"456"}fgh" // error // error // error | ^^^ diff --git a/tests/neg-macros/i6432b.check b/tests/neg-macros/i6432b.check index 395d089c92e9..8cd2820f4fef 100644 --- a/tests/neg-macros/i6432b.check +++ b/tests/neg-macros/i6432b.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i6432b/Test_2.scala:4:8 --------------------------------------------------------------------- 4 | foo"""abc${"123"}xyz${"456"}fgh""" // error // error // error | ^^^ diff --git a/tests/neg-macros/i6976.check b/tests/neg-macros/i6976.check index 0c30aa856ed1..380c71ede8cc 100644 --- a/tests/neg-macros/i6976.check +++ b/tests/neg-macros/i6976.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i6976/Test_2.scala:5:44 --------------------------------------------------------------------- 5 | def main(args: Array[String]): Unit = mcr { 2 } // error | ^^^^^^^^^ diff --git a/tests/neg-macros/i9014.check b/tests/neg-macros/i9014.check index c0d08a42ef2a..27688c904c11 100644 --- a/tests/neg-macros/i9014.check +++ b/tests/neg-macros/i9014.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/i9014/Test_2.scala:1:23 --------------------------------------------------------------------- 1 |val tests = summon[Bar] // error | ^ diff --git a/tests/neg-macros/i9014b.check b/tests/neg-macros/i9014b.check index 4098bccf462b..aca1cd062b76 100644 --- a/tests/neg-macros/i9014b.check +++ b/tests/neg-macros/i9014b.check @@ -1,4 +1,3 @@ - -- [E172] Type Error: tests/neg-macros/i9014b/Test_2.scala:1:23 -------------------------------------------------------- 1 |val tests = summon[Bar] // error | ^ diff --git a/tests/neg-macros/i9685.check b/tests/neg-macros/i9685.check index bb25a0808aca..80cdf9d4bcbf 100644 --- a/tests/neg-macros/i9685.check +++ b/tests/neg-macros/i9685.check @@ -1,4 +1,3 @@ - -- [E008] Not Found Error: tests/neg-macros/i9685/Test_2.scala:3:4 ----------------------------------------------------- 3 | 1.asdf // error | ^^^^^^ diff --git a/tests/neg-macros/ill-abort.check b/tests/neg-macros/ill-abort.check index c267c2e79ecf..849d74c6b7e0 100644 --- a/tests/neg-macros/ill-abort.check +++ b/tests/neg-macros/ill-abort.check @@ -1,4 +1,3 @@ - -- Error: tests/neg-macros/ill-abort/quoted_2.scala:1:15 --------------------------------------------------------------- 1 |def test = fail() // error | ^^^^^^ diff --git a/tests/neg/i20245.check b/tests/neg/i20245.check index 49d08c646f99..7541d1125572 100644 --- a/tests/neg/i20245.check +++ b/tests/neg/i20245.check @@ -1,4 +1,3 @@ - -- [E046] Cyclic Error: tests/neg/i20245/Typer_2.scala:16:57 ----------------------------------------------------------- 16 | private[typer] val unification = new Unification(using this) // error | ^ diff --git a/tests/neg/i9408b.check b/tests/neg/i9408b.check index 5f8a854a9282..9adc5300de3c 100644 --- a/tests/neg/i9408b.check +++ b/tests/neg/i9408b.check @@ -1,4 +1,3 @@ - -- Error: tests/neg/i9408b/Test_2.scala:8:20 --------------------------------------------------------------------------- 8 | val length: Int = "abc" // error | ^^^^^ diff --git a/tests/neg/mixin-forwarder-clash2.check b/tests/neg/mixin-forwarder-clash2.check index 13993192993d..126382e563e5 100644 --- a/tests/neg/mixin-forwarder-clash2.check +++ b/tests/neg/mixin-forwarder-clash2.check @@ -1,4 +1,3 @@ - -- [E120] Naming Error: tests/neg/mixin-forwarder-clash2/B_2.scala:1:6 ------------------------------------------------- 1 |class Bar2 extends Bar1 with Two[Foo] // error | ^ diff --git a/tests/neg/yimports-custom.check b/tests/neg/yimports-custom.check index 6ed2eb8b1df3..af6b8792f611 100644 --- a/tests/neg/yimports-custom.check +++ b/tests/neg/yimports-custom.check @@ -1,4 +1,3 @@ - -- [E006] Not Found Error: tests/neg/yimports-custom/C_2.scala:5:16 ---------------------------------------------------- 5 | def greet() = println("hello, world!") // error | ^^^^^^^ diff --git a/tests/neg/yimports-stable.check b/tests/neg/yimports-stable.check index 6a0b059de908..ba87116955c2 100644 --- a/tests/neg/yimports-stable.check +++ b/tests/neg/yimports-stable.check @@ -1,4 +1,3 @@ - error: bad preamble import hello.world.potions -- [E006] Not Found Error: tests/neg/yimports-stable/C_2.scala:4:9 ----------------------------------------------------- 4 | val v: Numb = magic // error // error diff --git a/tests/warn/i22795.check b/tests/warn/i22795.check index 2ce9b16e0477..7e20928d8563 100644 --- a/tests/warn/i22795.check +++ b/tests/warn/i22795.check @@ -1,4 +1,3 @@ - -- Deprecation Warning: tests/warn/i22795/test_1.scala:4:7 ------------------------------------------------------------- 4 | lib.m() // warn | ^^^^^^^