From 8c673ce23e6074562095ef8a254e68b8c73b773a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Sowa?= Date: Mon, 23 Sep 2024 14:21:33 +0200 Subject: [PATCH 1/4] Xsource:3, dropping Scala 2.12. --- .github/workflows/ci.yml | 2 +- build.sbt | 43 +++++++++++++------ .../pl/iterators/sealedmonad/Sealed.scala | 12 +++--- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80be7e1..8652318 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - scala: [2.12.19, 2.13.14, 3.3.3] + scala: [2.13.15, 3.3.3] java: [temurin@8, temurin@17] runs-on: ${{ matrix.os }} steps: diff --git a/build.sbt b/build.sbt index 6f0331f..0a2a44c 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,4 @@ -val isDotty = Def.setting(CrossVersion.partialVersion(scalaVersion.value).exists(_._1 != 2)) +val isScala3 = Def.setting(CrossVersion.partialVersion(scalaVersion.value).exists(_._1 != 2)) // Dependencies @@ -12,17 +12,16 @@ libraryDependencies ++= Seq( "org.typelevel" %% "cats-testkit-scalatest" % castsTestkitScalatestVersion % Test ) -libraryDependencies ++= (if (isDotty.value) Nil +libraryDependencies ++= (if (isScala3.value) Nil else Seq(compilerPlugin("org.typelevel" %% "kind-projector" % "0.13.3" cross CrossVersion.full))) // Multiple Scala versions support -val scala_2_12 = "2.12.19" -val scala_2_13 = "2.13.14" -val dotty = "3.3.1" +val scala_2_13 = "2.13.15" +val scala_3 = "3.3.3" val mainScalaVersion = scala_2_13 -val supportedScalaVersions = Seq(scala_2_12, scala_2_13, dotty) +val supportedScalaVersions = Seq(scala_2_13, scala_3) ThisBuild / crossScalaVersions := supportedScalaVersions ThisBuild / scalaVersion := mainScalaVersion @@ -30,10 +29,26 @@ ThisBuild / scalaVersion := mainScalaVersion lazy val baseSettings = Seq( // Scala settings homepage := Some(url("https://github.com/theiterators/sealed-monad")), - scalacOptions := Seq("-deprecation", "-unchecked", "-feature", "-encoding", "utf8") ++ - (if (isDotty.value) - Seq("-language:implicitConversions", "-Ykind-projector", "-Xignore-scala2-macros") - else Nil), + scalacOptions ++= (if (isScala3.value) + Seq( + "-deprecation", + "-unchecked", + "-feature", + "-language:implicitConversions", + "-Ykind-projector:underscores", + "-encoding", + "utf8" + ) + else + Seq( + "-deprecation", + "-unchecked", + "-feature", + "-Xsource:3", + "-P:kind-projector:underscore-placeholders", + "-encoding", + "utf8" + )), scalafmtOnCompile := true, // Sonatype settings sonatypeProfileName := "pl.iterators", @@ -43,10 +58,10 @@ lazy val baseSettings = Seq( organizationHomepage := Some(url("https://www.iteratorshq.com")), developers := List( Developer( - id = "mrzeznicki", - name = "Marcin Rzeźnicki", - email = "mrzeznicki@iterato.rs", - url = url("https://github.com/marcin-rzeznicki") + id = "luksow", + name = "Łukasz Sowa", + email = "lukasz@iteratorshq.com", + url = url("https://github.com/luksow") ), Developer( id = "pkiersznowski", diff --git a/src/main/scala/pl/iterators/sealedmonad/Sealed.scala b/src/main/scala/pl/iterators/sealedmonad/Sealed.scala index c7c0d3c..1acbb03 100644 --- a/src/main/scala/pl/iterators/sealedmonad/Sealed.scala +++ b/src/main/scala/pl/iterators/sealedmonad/Sealed.scala @@ -557,13 +557,13 @@ object Sealed extends SealedInstances { } } -private final class SealedMonad[F[_], ADT] extends StackSafeMonad[Sealed[F, *, ADT]] { - override def pure[A](x: A) = Sealed.liftF(x) - override def flatMap[A, B](fa: Sealed[F, A, ADT])(f: A => Sealed[F, B, ADT]) = fa.flatMap(f) - override def map[A, B](fa: Sealed[F, A, ADT])(f: A => B) = fa.map(f) - override def widen[A, B >: A](fa: Sealed[F, A, ADT]) = fa +private final class SealedMonad[F[_], ADT] extends StackSafeMonad[Sealed[F, _, ADT]] { + override def pure[A](x: A): Sealed[F, A, ADT] = Sealed.liftF(x) + override def flatMap[A, B](fa: Sealed[F, A, ADT])(f: A => Sealed[F, B, ADT]): Sealed[F, B, ADT] = fa.flatMap(f) + override def map[A, B](fa: Sealed[F, A, ADT])(f: A => B): Sealed[F, B, ADT] = fa.map(f) + override def widen[A, B >: A](fa: Sealed[F, A, ADT]): Sealed[F, B, ADT] = fa } trait SealedInstances { - implicit def sealedMonad[F[_], ADT]: Monad[Sealed[F, *, ADT]] = new SealedMonad + implicit def sealedMonad[F[_], ADT]: Monad[Sealed[F, _, ADT]] = new SealedMonad } From eddb5a247e5246363524dc0104ddc24077277a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Sowa?= Date: Mon, 23 Sep 2024 14:28:11 +0200 Subject: [PATCH 2/4] Removing cats-testkit-scalatest --- build.sbt | 11 +++++++---- .../scala/pl/iterators/sealedmonad/SealedSuite.scala | 6 ++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/build.sbt b/build.sbt index 0a2a44c..ad36b97 100644 --- a/build.sbt +++ b/build.sbt @@ -4,12 +4,15 @@ val isScala3 = Def.setting(CrossVersion.partialVersion(scalaVersion.value).exist val catsVersion = "2.12.0" val castsTestkitScalatestVersion = "2.1.5" +val scalatestVersion = "3.2.19" +val disciplineVersion = "2.3.0" libraryDependencies ++= Seq( - "org.typelevel" %% "cats-core" % catsVersion, - "org.typelevel" %% "cats-laws" % catsVersion % Test, - "org.typelevel" %% "cats-testkit" % catsVersion % Test, - "org.typelevel" %% "cats-testkit-scalatest" % castsTestkitScalatestVersion % Test + "org.typelevel" %% "cats-core" % catsVersion, + "org.typelevel" %% "cats-laws" % catsVersion % Test, + "org.typelevel" %% "cats-testkit" % catsVersion % Test, + "org.scalatest" %% "scalatest" % scalatestVersion % Test, + "org.typelevel" %% "discipline-scalatest" % disciplineVersion % Test ) libraryDependencies ++= (if (isScala3.value) Nil diff --git a/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala b/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala index 7ec4773..b355738 100644 --- a/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala +++ b/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala @@ -1,5 +1,7 @@ package pl.iterators.sealedmonad -import cats.tests.CatsSuite +import org.scalatest.funsuite.AnyFunSuite +import org.scalatestplus.scalacheck.Checkers +import org.typelevel.discipline.scalatest.FunSuiteDiscipline -abstract class SealedSuite extends CatsSuite with SealedTestInstances +abstract class SealedSuite extends AnyFunSuite with FunSuiteDiscipline with Checkers with SealedTestInstances From 44f504da05a61d1f1f5ce768d3a95581002a79d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Sowa?= Date: Mon, 23 Sep 2024 15:19:39 +0200 Subject: [PATCH 3/4] Adding cross-building for JS & Native. --- .../benchmarks/SingleSealedOps.scala | 4 +- build.sbt | 38 ++++++++++--------- .../sealedmonad/examples/AllTests.scala | 10 +++-- .../sealedmonad/examples/ExamplesSuite.scala | 6 ++- project/plugins.sbt | 5 +++ .../pl/iterators/sealedmonad/Sealed.scala | 0 .../sealedmonad/syntax/SealedSyntax.scala | 0 .../sealedmonad/syntax/package.scala | 0 .../sealedmonad/SealedMonadSpecs.scala | 0 .../iterators/sealedmonad/SealedSpecs.scala | 0 .../iterators/sealedmonad/SealedSuite.scala | 0 .../sealedmonad/SealedTestInstances.scala | 0 .../iterators/sealedmonad/SealedTests.scala | 0 .../sealedmonad/laws/SealedLaws.scala | 0 .../SealedSideEffectsInspect.scala | 0 .../SealedSideEffectsInspectF.scala | 0 .../SealedSideEffectsSemiflatTap.scala | 0 .../side_effects/SealedSideEffectsTap.scala | 0 18 files changed, 38 insertions(+), 25 deletions(-) rename {src => sealedmonad/src}/main/scala/pl/iterators/sealedmonad/Sealed.scala (100%) rename {src => sealedmonad/src}/main/scala/pl/iterators/sealedmonad/syntax/SealedSyntax.scala (100%) rename {src => sealedmonad/src}/main/scala/pl/iterators/sealedmonad/syntax/package.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/SealedMonadSpecs.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/SealedSpecs.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/SealedSuite.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/SealedTestInstances.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/SealedTests.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/laws/SealedLaws.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspect.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspectF.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsSemiflatTap.scala (100%) rename {src => sealedmonad/src}/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsTap.scala (100%) diff --git a/benchmarks/src/main/scala/pl/iterators/sealedmonad/benchmarks/SingleSealedOps.scala b/benchmarks/src/main/scala/pl/iterators/sealedmonad/benchmarks/SingleSealedOps.scala index 28a8365..542cda5 100644 --- a/benchmarks/src/main/scala/pl/iterators/sealedmonad/benchmarks/SingleSealedOps.scala +++ b/benchmarks/src/main/scala/pl/iterators/sealedmonad/benchmarks/SingleSealedOps.scala @@ -61,8 +61,8 @@ class SingleSealedOps { } @Benchmark - def attemptFBenchmark = Sealed.liftF(x).attemptF(attemptFWork).map(Ok).run + def attemptFBenchmark = Sealed.liftF(x).attemptF(attemptFWork).map(Ok.apply).run @Benchmark - def attemptFCatsBaseline = EitherT.rightT[Try, ADT](x).flatMapF(attemptFWork).map(Ok).value + def attemptFCatsBaseline = EitherT.rightT[Try, ADT](x).flatMapF(attemptFWork).map(Ok.apply).value } diff --git a/build.sbt b/build.sbt index ad36b97..07f2681 100644 --- a/build.sbt +++ b/build.sbt @@ -7,18 +7,6 @@ val castsTestkitScalatestVersion = "2.1.5" val scalatestVersion = "3.2.19" val disciplineVersion = "2.3.0" -libraryDependencies ++= Seq( - "org.typelevel" %% "cats-core" % catsVersion, - "org.typelevel" %% "cats-laws" % catsVersion % Test, - "org.typelevel" %% "cats-testkit" % catsVersion % Test, - "org.scalatest" %% "scalatest" % scalatestVersion % Test, - "org.typelevel" %% "discipline-scalatest" % disciplineVersion % Test -) - -libraryDependencies ++= (if (isScala3.value) Nil - else - Seq(compilerPlugin("org.typelevel" %% "kind-projector" % "0.13.3" cross CrossVersion.full))) - // Multiple Scala versions support val scala_2_13 = "2.13.15" @@ -52,6 +40,15 @@ lazy val baseSettings = Seq( "-encoding", "utf8" )), + libraryDependencies ++= Seq( + "org.typelevel" %%% "cats-core" % catsVersion, + "org.typelevel" %%% "cats-laws" % catsVersion % Test, + "org.typelevel" %%% "cats-testkit" % catsVersion % Test, + "org.scalatest" %%% "scalatest" % scalatestVersion % Test, + "org.typelevel" %%% "discipline-scalatest" % disciplineVersion % Test + ) ++ (if (isScala3.value) Nil + else + Seq(compilerPlugin("org.typelevel" %% "kind-projector" % "0.13.3" cross CrossVersion.full))), scalafmtOnCompile := true, // Sonatype settings sonatypeProfileName := "pl.iterators", @@ -90,7 +87,7 @@ lazy val noPublishSettings = lazy val examples = project .in(file("examples")) - .dependsOn(sealedMonad % "test->test;compile->compile") + .dependsOn(sealedMonad.jvm % "test->test;compile->compile") .settings(baseSettings: _*) .settings(noPublishSettings: _*) .settings( @@ -101,7 +98,7 @@ lazy val examples = project lazy val docs = project .in(file("sealed-docs")) - .dependsOn(sealedMonad % "test->test;compile->compile") + .dependsOn(sealedMonad.jvm % "test->test;compile->compile") .enablePlugins(MdocPlugin, DocusaurusPlugin) .settings(baseSettings: _*) .settings(noPublishSettings: _*) @@ -118,7 +115,7 @@ lazy val docs = project lazy val benchmarks = project .in(file("benchmarks")) - .dependsOn(sealedMonad % "test->test;compile->compile") + .dependsOn(sealedMonad.jvm % "test->test;compile->compile") .enablePlugins(JmhPlugin) .settings(baseSettings: _*) .settings(noPublishSettings: _*) @@ -130,10 +127,17 @@ lazy val benchmarks = project addCommandAlias("flame", "benchmarks/jmh:run -p tokens=64 -prof jmh.extras.Async:dir=target/flamegraphs;flameGraphOpts=--width,1900") -lazy val sealedMonad = project - .in(file(".")) +lazy val sealedMonad = crossProject(JSPlatform, JVMPlatform, NativePlatform) + .withoutSuffixFor(JVMPlatform) + .crossType(CrossType.Pure) + .in(file("sealedmonad")) + .jsConfigure(_.disablePlugins(DoctestPlugin)) .settings(baseSettings: _*) .settings( name := "sealed-monad", description := "Scala library for nice for-comprehension-style error handling" ) + +// lazy val root = project +// .in(file(".")) +// .aggregate(sealedMonad.jvm, sealedMonad.js, sealedMonad.native, examples, docs, benchmarks) diff --git a/examples/src/test/scala/pl/iterators/sealedmonad/examples/AllTests.scala b/examples/src/test/scala/pl/iterators/sealedmonad/examples/AllTests.scala index 9609e35..039af43 100644 --- a/examples/src/test/scala/pl/iterators/sealedmonad/examples/AllTests.scala +++ b/examples/src/test/scala/pl/iterators/sealedmonad/examples/AllTests.scala @@ -3,6 +3,8 @@ package pl.iterators.sealedmonad.examples import cats.{Eq, Monad} import org.scalacheck.{Arbitrary, Cogen} import Options._ +import org.typelevel.discipline.Laws +import org.scalacheck.Prop import scala.language.higherKinds @@ -21,10 +23,10 @@ trait AllTests[M[_]] extends OptionsTests[M] { EqMLogResp: Eq[M[LoginResponse]], EqMConfirmResp: Eq[M[ConfirmResponse]] ) = new RuleSet { - override val name = "all" - override val bases = Seq.empty - override val parents = Seq(options) - override val props = Seq.empty + override val name = "all" + override val bases: Seq[(String, Laws#RuleSet)] = Seq.empty + override val parents: Seq[RuleSet] = Seq(options) + override val props: Seq[(String, Prop)] = Seq.empty } } diff --git a/examples/src/test/scala/pl/iterators/sealedmonad/examples/ExamplesSuite.scala b/examples/src/test/scala/pl/iterators/sealedmonad/examples/ExamplesSuite.scala index 9067b82..6890176 100644 --- a/examples/src/test/scala/pl/iterators/sealedmonad/examples/ExamplesSuite.scala +++ b/examples/src/test/scala/pl/iterators/sealedmonad/examples/ExamplesSuite.scala @@ -1,14 +1,16 @@ package pl.iterators.sealedmonad.examples import cats.Eq -import cats.tests.CatsSuite import org.scalacheck.{Arbitrary, Gen} import org.scalatest.concurrent.ScalaFutures import org.scalatest.time.{Seconds, Span} +import org.scalatest.funsuite.AnyFunSuite +import org.scalatestplus.scalacheck.Checkers +import org.typelevel.discipline.scalatest.FunSuiteDiscipline import scala.concurrent.{ExecutionContext, Future} -trait ExamplesSuite extends CatsSuite with ScalaFutures { +trait ExamplesSuite extends AnyFunSuite with FunSuiteDiscipline with Checkers with ScalaFutures { implicit final val executionContext: ExecutionContext = ExecutionContext.global override implicit final val patienceConfig: PatienceConfig = super.patienceConfig.copy(timeout = scaled(Span(4, Seconds))) diff --git a/project/plugins.sbt b/project/plugins.sbt index 4674434..281c8b2 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -4,3 +4,8 @@ addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12") addSbtPlugin("com.github.tkawachi" % "sbt-doctest" % "0.10.0") addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.5.4") addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") + +addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2") +addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.4") diff --git a/src/main/scala/pl/iterators/sealedmonad/Sealed.scala b/sealedmonad/src/main/scala/pl/iterators/sealedmonad/Sealed.scala similarity index 100% rename from src/main/scala/pl/iterators/sealedmonad/Sealed.scala rename to sealedmonad/src/main/scala/pl/iterators/sealedmonad/Sealed.scala diff --git a/src/main/scala/pl/iterators/sealedmonad/syntax/SealedSyntax.scala b/sealedmonad/src/main/scala/pl/iterators/sealedmonad/syntax/SealedSyntax.scala similarity index 100% rename from src/main/scala/pl/iterators/sealedmonad/syntax/SealedSyntax.scala rename to sealedmonad/src/main/scala/pl/iterators/sealedmonad/syntax/SealedSyntax.scala diff --git a/src/main/scala/pl/iterators/sealedmonad/syntax/package.scala b/sealedmonad/src/main/scala/pl/iterators/sealedmonad/syntax/package.scala similarity index 100% rename from src/main/scala/pl/iterators/sealedmonad/syntax/package.scala rename to sealedmonad/src/main/scala/pl/iterators/sealedmonad/syntax/package.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/SealedMonadSpecs.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedMonadSpecs.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/SealedMonadSpecs.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedMonadSpecs.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/SealedSpecs.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedSpecs.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/SealedSpecs.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedSpecs.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedSuite.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/SealedTestInstances.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedTestInstances.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/SealedTestInstances.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedTestInstances.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/SealedTests.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedTests.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/SealedTests.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/SealedTests.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/laws/SealedLaws.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/laws/SealedLaws.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/laws/SealedLaws.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/laws/SealedLaws.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspect.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspect.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspect.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspect.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspectF.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspectF.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspectF.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsInspectF.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsSemiflatTap.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsSemiflatTap.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsSemiflatTap.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsSemiflatTap.scala diff --git a/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsTap.scala b/sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsTap.scala similarity index 100% rename from src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsTap.scala rename to sealedmonad/src/test/scala/pl/iterators/sealedmonad/side_effects/SealedSideEffectsTap.scala From 2cd915c79f494856cd7148695549c646fa169885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Kiersznowski?= Date: Mon, 23 Sep 2024 15:30:56 +0200 Subject: [PATCH 4/4] Update ci.yml --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8652318..a9c8135 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,4 +61,4 @@ jobs: with: fetch-depth: 0 - uses: olafurpg/setup-scala@v13 - - run: sbt '++2.12.18; docs/mdoc' + - run: sbt '++2.13.15; docs/mdoc'