From 87fcf676a79c9a96fc888652067eca10266b29dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wro=C5=84ski?= Date: Sat, 4 Feb 2023 12:39:52 +0100 Subject: [PATCH 1/5] Use stable version of scala in coverage test --- .../scala/scala/cli/integration/CompileTestDefinitions.scala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala index a77ee59ba6..0048a96095 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/CompileTestDefinitions.scala @@ -488,9 +488,8 @@ abstract class CompileTestDefinitions(val scalaVersionOpt: Option[String]) test("generate scoverage.coverage file") { val fileName = "Hello.scala" val inputs = TestInputs( - os.rel / fileName -> // scala version should updated to 3.3 after release - s"""//> using scala "3.2.0-RC1-bin-20220604-13ce496-NIGHTLY" - |//> using options "-coverage-out:." + os.rel / fileName -> + s"""//> using options "-coverage-out:." | |@main def main = () |""".stripMargin From e46a3ac0ed58b178d7dbace7c3704dd53d3bc664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wro=C5=84ski?= Date: Sat, 4 Feb 2023 12:40:25 +0100 Subject: [PATCH 2/5] Revert compilation workaround after dump to 3.2.0 --- .../scala/scala/build/actionable/ActionablePreprocessor.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/options/src/main/scala/scala/build/actionable/ActionablePreprocessor.scala b/modules/options/src/main/scala/scala/build/actionable/ActionablePreprocessor.scala index d0d20cbb8c..0b70507cef 100644 --- a/modules/options/src/main/scala/scala/build/actionable/ActionablePreprocessor.scala +++ b/modules/options/src/main/scala/scala/build/actionable/ActionablePreprocessor.scala @@ -16,7 +16,6 @@ object ActionablePreprocessor { .map(handler => handler.createActionableDiagnostics(options)) .sequence .left.map(CompositeBuildException(_)) - .map((v: Seq[Seq[Any]]) => v.flatten) - .asInstanceOf[Either[BuildException, Seq[ActionableDiagnostic]]] + .map(_.flatten) } From 8b53d7b36f9cb8541051e1ffca932844f4b9a56e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wro=C5=84ski?= Date: Mon, 6 Feb 2023 13:54:02 +0100 Subject: [PATCH 3/5] Fix - use logger error to print erorr message --- .../src/main/scala/scala/build/ConsoleBloopBuildClient.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala b/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala index 968ddb0c0f..49c6f89b51 100644 --- a/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala +++ b/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala @@ -185,7 +185,7 @@ object ConsoleBloopBuildClient { } logger.error(s"$prefix$path0:$line$col" + (if (msgIt.hasNext) " " + msgIt.next() else "")) for (line <- msgIt) - logger.message(prefix + line) + logger.error(prefix + line) val codeOpt = { val lineOpt = if (diag.getRange.getStart.getLine == diag.getRange.getEnd.getLine) From 5a50e508026554398e4c4000894d990f913eb059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wro=C5=84ski?= Date: Sat, 4 Feb 2023 12:52:49 +0100 Subject: [PATCH 4/5] Add new line before printing the message content from diagnostic --- .../src/main/scala/scala/build/ConsoleBloopBuildClient.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala b/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala index 49c6f89b51..6d226367c9 100644 --- a/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala +++ b/modules/build/src/main/scala/scala/build/ConsoleBloopBuildClient.scala @@ -174,7 +174,7 @@ object ConsoleBloopBuildClient { val prefix = diagnosticPrefix(diag.getSeverity) val line = (diag.getRange.getStart.getLine + 1).toString + ":" - val col = (diag.getRange.getStart.getCharacter + 1).toString + ":" + val col = (diag.getRange.getStart.getCharacter + 1).toString val msgIt = diag.getMessage.linesIterator val path0 = path match { @@ -183,7 +183,7 @@ object ConsoleBloopBuildClient { "." + File.separator + p.relativeTo(Os.pwd).toString case Right(p) => p.toString } - logger.error(s"$prefix$path0:$line$col" + (if (msgIt.hasNext) " " + msgIt.next() else "")) + logger.error(s"$prefix$path0:$line$col") for (line <- msgIt) logger.error(prefix + line) val codeOpt = { From 2a3e247d89b18619a72e36aa160423d8ef7d2a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Wro=C5=84ski?= Date: Sat, 4 Feb 2023 12:55:41 +0100 Subject: [PATCH 5/5] Add regression test for rendering explain message --- .../cli/integration/CompileTestsDefault.scala | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/modules/integration/src/test/scala/scala/cli/integration/CompileTestsDefault.scala b/modules/integration/src/test/scala/scala/cli/integration/CompileTestsDefault.scala index 841ee52762..706fdace4a 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/CompileTestsDefault.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/CompileTestsDefault.scala @@ -1,3 +1,23 @@ package scala.cli.integration -class CompileTestsDefault extends CompileTestDefinitions(scalaVersionOpt = None) +import com.eed3si9n.expecty.Expecty.expect +class CompileTestsDefault extends CompileTestDefinitions(scalaVersionOpt = None) { + test("render explain message") { + val fileName = "Hello.scala" + val inputs = TestInputs( + os.rel / fileName -> // should be dump to 3.3.1 after release + s"""//> using scala "3.3.1-RC1-bin-20230203-3ef1e73-NIGHTLY" + |//> using options "--explain" + | + |class A + |val i: Int = A() + |""".stripMargin + ) + inputs.fromRoot { root => + val out = os.proc(TestUtil.cli, "compile", extraOptions, fileName) + .call(cwd = root, check = false, mergeErrIntoOut = true).out.trim() + + expect(out.contains("Explanation")) + } + } +}