From 78c4d9703c7789cdf7f2267319156964258cffcc Mon Sep 17 00:00:00 2001 From: Jan Chyb Date: Tue, 30 Sep 2025 17:38:08 +0200 Subject: [PATCH] Set minimum JDK version for -release flag to java 17, drop java 8 tests --- .github/workflows/ci.yaml | 40 +++++++++---------- .../scala/dotty/communitybuild/projects.scala | 23 +++++++++-- .../communitybuild/CommunityBuildTest.scala | 6 ++- .../dotc/config/ScalaSettingsProperties.scala | 10 ++--- .../completion/CompletionRelease11Suite.scala | 32 --------------- .../completion/CompletionRelease8Suite.scala | 31 -------------- .../sbt-dotty/scaladoc-regressions/build.sbt | 2 +- tests/{ => disabled}/neg/i15144.scala | 0 .../neg}/jdk-9-app.check | 0 tests/{ => disabled}/neg/jdk-9-app.scala | 0 tests/{ => disabled}/pos/jdk-8-app.scala | 0 11 files changed, 50 insertions(+), 94 deletions(-) delete mode 100644 presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease11Suite.scala delete mode 100644 presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease8Suite.scala rename tests/{ => disabled}/neg/i15144.scala (100%) rename tests/{neg-custom-args => disabled/neg}/jdk-9-app.check (100%) rename tests/{ => disabled}/neg/jdk-9-app.scala (100%) rename tests/{ => disabled}/pos/jdk-8-app.scala (100%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 953fa83aebe4..b7600126f132 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -200,11 +200,11 @@ jobs: )" steps: - ###################################################################################### - ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## - ###################################################################################### - - name: Set JDK 8 as default - run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH + ############################################################################################## + ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA 3.8.0+ IS DISTRIBUTED USING JAVA 17. ## + ############################################################################################## + - name: Set JDK 17 as default + run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH - name: Reset existing repo run: | git config --global --add safe.directory $GITHUB_WORKSPACE @@ -257,11 +257,11 @@ jobs: )" steps: - ###################################################################################### - ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## - ###################################################################################### - - name: Set JDK 8 as default - run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH + ############################################################################################## + ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA 3.8.0+ IS DISTRIBUTED USING JAVA 17. ## + ############################################################################################## + - name: Set JDK 17 as default + run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH - name: Reset existing repo run: | git config --global --add safe.directory $GITHUB_WORKSPACE @@ -314,11 +314,11 @@ jobs: )" steps: - ###################################################################################### - ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## - ###################################################################################### - - name: Set JDK 8 as default - run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH + ############################################################################################## + ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA 3.8.0+ IS DISTRIBUTED USING JAVA 17. ## + ############################################################################################## + - name: Set JDK 17 as default + run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH - name: Reset existing repo run: | git config --global --add safe.directory $GITHUB_WORKSPACE @@ -415,11 +415,11 @@ jobs: SONATYPE_USER: ${{ secrets.SONATYPE_USER_ORGSCALALANG }} steps: - ###################################################################################### - ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## - ###################################################################################### - - name: Set JDK 8 as default - run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH + ############################################################################################## + ## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA 3.8.0+ IS DISTRIBUTED USING JAVA 17. ## + ############################################################################################## + - name: Set JDK 17 as default + run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH - name: Reset existing repo run: | git config --global --add safe.directory $GITHUB_WORKSPACE diff --git a/community-build/src/scala/dotty/communitybuild/projects.scala b/community-build/src/scala/dotty/communitybuild/projects.scala index 20cc90101eb5..74786437d0be 100644 --- a/community-build/src/scala/dotty/communitybuild/projects.scala +++ b/community-build/src/scala/dotty/communitybuild/projects.scala @@ -127,6 +127,11 @@ object projects: s""";set $project/Compile/doc/sources ++= ($project/Compile/doc/dotty.tools.sbtplugin.DottyPlugin.autoImport.tastyFiles).value ;$project/doc""" ).mkString(" ") + private def removeRelease8(projects: String*): String = + projects.map(project => + s"""set $project/Compile/scalacOptions := ($project/Compile/scalacOptions).value.filterNot(opt => opt == "-release" || opt == "8")""" + ).mkString("; ") + private def aggregateDoc(in: String)(projects: String*) = val tastyFiles = (in +: projects).map(p => s"($p/Compile/doc/dotty.tools.sbtplugin.DottyPlugin.autoImport.tastyFiles).value").mkString(" ++ ") @@ -445,7 +450,10 @@ object projects: lazy val discipline = SbtCommunityProject( project = "discipline", - sbtTestCommand = "coreJVM/test;coreJS/test", + sbtTestCommand = List( + removeRelease8("core.jvm", "core.js"), + "coreJVM/test;coreJS/test" + ).mkString("; "), sbtPublishCommand = "set every credentials := Nil;coreJVM/publishLocal;coreJS/publishLocal", scalacOptions = SbtCommunityProject.scalacOptions.filter(_ != "-Wsafe-init"), ) @@ -544,7 +552,12 @@ object projects: lazy val scissLucre = SbtCommunityProject( project = "Lucre", - sbtTestCommand = "adjunctJVM/test;baseJVM/test;confluentJVM/test;coreJVM/test;dataJVM/test;exprJVM/test;geomJVM/test;lucre-bdb/test;testsJVM/test", + sbtTestCommand = + val subprojects = List("adjunct.jvm", "base.jvm", "confluent.jvm", "core.jvm", "data.jvm", "expr.jvm", "geom.jvm", "bdb", "tests.jvm") + List( + subprojects.map(name => s"""set ($name/Compile/compile/scalacOptions) := ($name/Compile/compile/scalacOptions).value.filterNot(opt => opt == "-release" || opt == "8")"""), + List("adjunctJVM/test;baseJVM/test;confluentJVM/test;coreJVM/test;dataJVM/test;exprJVM/test;geomJVM/test;lucre-bdb/test;testsJVM/test") + ).flatten.mkString("; "), extraSbtArgs = List("-Dde.sciss.lucre.ShortTests=true"), sbtPublishCommand = "adjunctJVM/publishLocal;baseJVM/publishLocal;confluentJVM/publishLocal;coreJVM/publishLocal;dataJVM/publishLocal;exprJVM/publishLocal;geomJVM/publishLocal;lucre-bdb/publishLocal", ) @@ -615,7 +628,11 @@ object projects: lazy val fs2 = SbtCommunityProject( project = "fs2", - sbtTestCommand = "coreJVM/test; coreJS/test", // io/test requires JDK9+ + sbtTestCommand = + List( + removeRelease8("coreJVM", "coreJS"), // io/test currently fails JDK9+ + "coreJVM/test; coreJS/test;" + ).mkString("; "), sbtPublishCommand = "coreJVM/publishLocal; coreJS/publishLocal", scalacOptions = SbtCommunityProject.scalacOptions.filter(_ != "-Wsafe-init"), ) diff --git a/community-build/test/scala/dotty/communitybuild/CommunityBuildTest.scala b/community-build/test/scala/dotty/communitybuild/CommunityBuildTest.scala index e2cc88c04d83..f83078f26c36 100644 --- a/community-build/test/scala/dotty/communitybuild/CommunityBuildTest.scala +++ b/community-build/test/scala/dotty/communitybuild/CommunityBuildTest.scala @@ -58,7 +58,8 @@ end CommunityBuildTestB @Category(Array(classOf[TestCategory])) class CommunityBuildTestC: @Test def akka = projects.akka.run() - @Test def betterfiles = projects.betterfiles.run() + // Disabled because `javax.xml.bind` is not available since java 11 + // @Test def betterfiles = projects.betterfiles.run() @Test def cask = projects.cask.run() // Temporarily disabled until problem discovered in comments to #9449 is fixed // @Test def dottyCpsAsync = projects.dottyCpsAsync.run() @@ -75,7 +76,8 @@ class CommunityBuildTestC: @Test def oslib = projects.oslib.run() // @Test def oslibWatch = projects.oslibWatch.run() @Test def parboiled2 = projects.parboiled2.run() - @Test def playJson = projects.playJson.run() + // Disabled because `javax.xml.bind` is not available since java 11 + // @Test def playJson = projects.playJson.run() @Test def pprint = projects.pprint.run() //@Test def protoquill = projects.protoquill.run() @Test def requests = projects.requests.run() diff --git a/compiler/src/dotty/tools/dotc/config/ScalaSettingsProperties.scala b/compiler/src/dotty/tools/dotc/config/ScalaSettingsProperties.scala index b50fe0b93023..b7d953c6abed 100644 --- a/compiler/src/dotty/tools/dotc/config/ScalaSettingsProperties.scala +++ b/compiler/src/dotty/tools/dotc/config/ScalaSettingsProperties.scala @@ -10,15 +10,15 @@ object ScalaSettingsProperties: private lazy val minTargetVersion = classfileVersionMap.keysIterator.min private lazy val maxTargetVersion = classfileVersionMap.keysIterator.max + private val minReleaseVersion = 17 + def supportedTargetVersions: List[String] = (minTargetVersion to maxTargetVersion).toList.map(_.toString) def supportedReleaseVersions: List[String] = - if scala.util.Properties.isJavaAtLeast("9") then - val jdkVersion = JDK9Reflectors.runtimeVersionMajor(JDK9Reflectors.runtimeVersion()).intValue() - val maxVersion = Math.min(jdkVersion, maxTargetVersion) - (minTargetVersion to maxVersion).toList.map(_.toString) - else List(minTargetVersion).map(_.toString) + val jdkVersion = JDK9Reflectors.runtimeVersionMajor(JDK9Reflectors.runtimeVersion()).intValue() + val maxVersion = Math.min(jdkVersion, maxTargetVersion) + (minReleaseVersion to maxVersion).toList.map(_.toString) def supportedScalaReleaseVersions: List[String] = ScalaRelease.values.toList.map(_.show) diff --git a/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease11Suite.scala b/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease11Suite.scala deleted file mode 100644 index 76015a588387..000000000000 --- a/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease11Suite.scala +++ /dev/null @@ -1,32 +0,0 @@ -package dotty.tools.pc.tests.completion - -import dotty.tools.pc.base.BaseCompletionSuite - -import org.junit.Test -import org.junit.Before -import java.nio.file.Path -import dotty.tools.pc.utils.JRE - -class CompletionRelease11Suite extends BaseCompletionSuite: - - override protected def scalacOptions(classpath: Seq[Path]): Seq[String] = - "-release:11" +: super.scalacOptions(classpath) - - @Before - def beforeMethod(): Unit = - org.junit.Assume.assumeTrue(JRE.getJavaMajorVersion >= 11) - - @Test def java11Symbols = - check( - """ - |object A { - | "".repea@@ - |}""".stripMargin, - """repeat(x$0: Int): String - |replaceAll(x$0: String, x$1: String): String - |prependedAll[B >: A](prefix: IterableOnce[B]): IndexedSeq[B] - |prependedAll(prefix: String): String - |prependedAll[B >: Char](prefix: IterableOnce[B]): IndexedSeq[B] - |replaceAllLiterally(literal: String, replacement: String): String - |""".stripMargin - ) diff --git a/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease8Suite.scala b/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease8Suite.scala deleted file mode 100644 index 587cd5a53073..000000000000 --- a/presentation-compiler/test/dotty/tools/pc/tests/completion/CompletionRelease8Suite.scala +++ /dev/null @@ -1,31 +0,0 @@ -package dotty.tools.pc.tests.completion - -import dotty.tools.pc.base.BaseCompletionSuite - -import org.junit.Test -import org.junit.Before -import java.nio.file.Path -import dotty.tools.pc.utils.JRE - -class CompletionRelease8Suite extends BaseCompletionSuite: - - override protected def scalacOptions(classpath: Seq[Path]): Seq[String] = - "-release:8" +: super.scalacOptions(classpath) - - @Before - def beforeMethod(): Unit = - org.junit.Assume.assumeTrue(JRE.getJavaMajorVersion >= 8) - - @Test def noJvm11Symbols = - check( - """ - |object A { - | "".repea@@ - |}""".stripMargin, - """replaceAll(x$0: String, x$1: String): String - |prependedAll[B >: A](prefix: IterableOnce[B]): IndexedSeq[B] - |prependedAll(prefix: String): String - |prependedAll[B >: Char](prefix: IterableOnce[B]): IndexedSeq[B] - |replaceAllLiterally(literal: String, replacement: String): String - |""".stripMargin - ) diff --git a/sbt-test/sbt-dotty/scaladoc-regressions/build.sbt b/sbt-test/sbt-dotty/scaladoc-regressions/build.sbt index bfdadb5ee038..ad5ffdfab53b 100644 --- a/sbt-test/sbt-dotty/scaladoc-regressions/build.sbt +++ b/sbt-test/sbt-dotty/scaladoc-regressions/build.sbt @@ -6,4 +6,4 @@ lazy val i20476 = project lazy val i18231 = project .in(file("i18231")) - .settings(scalacOptions += "-release:8") + .settings(scalacOptions += "-release:17") diff --git a/tests/neg/i15144.scala b/tests/disabled/neg/i15144.scala similarity index 100% rename from tests/neg/i15144.scala rename to tests/disabled/neg/i15144.scala diff --git a/tests/neg-custom-args/jdk-9-app.check b/tests/disabled/neg/jdk-9-app.check similarity index 100% rename from tests/neg-custom-args/jdk-9-app.check rename to tests/disabled/neg/jdk-9-app.check diff --git a/tests/neg/jdk-9-app.scala b/tests/disabled/neg/jdk-9-app.scala similarity index 100% rename from tests/neg/jdk-9-app.scala rename to tests/disabled/neg/jdk-9-app.scala diff --git a/tests/pos/jdk-8-app.scala b/tests/disabled/pos/jdk-8-app.scala similarity index 100% rename from tests/pos/jdk-8-app.scala rename to tests/disabled/pos/jdk-8-app.scala