Skip to content

Commit 2edd670

Browse files
Cross compile to scala3 (#10)
This MR adds cross-compilation to scala 3.3.3. I also removed kind-projector because a single usage doesn't justify it enough (basically more code to add it than the number of lines it saves) --------- Co-authored-by: avoitsishevskii <avoitsishevskii@evolution.com>
1 parent 92c41bc commit 2edd670

File tree

5 files changed

+17
-15
lines changed

5 files changed

+17
-15
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
matrix:
1616
scala:
1717
- 2.13.14
18+
- 3.3.3
1819

1920
steps:
2021
- uses: actions/checkout@v4

build.sbt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,23 @@ organizationHomepage := Some(url("https://evolution.com"))
88
homepage := Some(url("https://github.com/evolution-gaming/resource-pool"))
99
startYear := Some(2023)
1010

11-
crossScalaVersions := Seq("2.13.14")
11+
crossScalaVersions := Seq("2.13.14", "3.3.3")
1212
scalaVersion := crossScalaVersions.value.head
13+
releaseCrossBuild := true
1314
scalacOptions := Seq(
1415
"-release:17",
1516
"-Xsource:3",
16-
"-deprecation",
17+
"-deprecation"
1718
)
1819
autoAPIMappings := true
1920
versionScheme := Some("early-semver")
2021
publishTo := Some(Resolver.evolutionReleases) // sbt-release
2122
versionPolicyIntention := Compatibility.BinaryCompatible // sbt-version-policy
2223

23-
libraryDependencies += compilerPlugin(`kind-projector` cross CrossVersion.full)
24+
2425
libraryDependencies ++= Seq(
2526
`cats-effect`,
26-
scalatest,
27+
scalatest
2728
)
2829

2930
licenses := Seq(("MIT", url("https://opensource.org/licenses/MIT")))

src/main/scala/com/evolution/resourcepool/ResourcePool.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ object ResourcePool {
8383
discardTasksOnRelease: Boolean,
8484
resource: Id => Resource[F, A]
8585
): Resource[F, ResourcePool[F, A]] = {
86-
86+
type ResourceF[+AA] = Resource[F, AA]
8787
def apply(maxSize: Int, partitions: Int) = {
8888

8989
def of(maxSize: Int)(resource: Id => Resource[F, A]) = {
@@ -99,13 +99,13 @@ object ResourcePool {
9999
} else {
100100
for {
101101
ref <- Ref[F].of(0).toResource
102-
values <- maxSize
102+
values1 <- maxSize
103103
.divide(partitions)
104104
.zipWithIndex
105105
.parTraverse { case (maxSize, idx) => of(maxSize) { id => resource(s"$idx-$id") } }
106-
values <- values
106+
values <- values1
107107
.toVector
108-
.pure[Resource[F, *]]
108+
.pure[ResourceF]
109109
length = values.length
110110
} yield {
111111
new ResourcePool[F, A] {

src/test/scala/com/evolution/resourcepool/ResourcePoolTest.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import scala.concurrent.duration.*
1313
import scala.util.control.NoStackTrace
1414

1515
class ResourcePoolTest extends AsyncFunSuite with Matchers {
16-
16+
type IOResource[+A] = Resource[IO, A]
1717
test("handle invalid `maxSize`") {
1818
()
19-
.pure[Resource[IO, *]]
19+
.pure[IOResource]
2020
.toResourcePool(
2121
maxSize = 1,
2222
expireAfter = 1.day,
@@ -114,7 +114,7 @@ class ResourcePoolTest extends AsyncFunSuite with Matchers {
114114
test("fail after being released") {
115115
val result = for {
116116
result <- ()
117-
.pure[Resource[IO, *]]
117+
.pure[IOResource]
118118
.toResourcePool(
119119
maxSize = 2,
120120
expireAfter = 1.day)
@@ -433,7 +433,7 @@ class ResourcePoolTest extends AsyncFunSuite with Matchers {
433433
val result = for {
434434
deferred0 <- Deferred[IO, Unit].toResource
435435
pool <- ()
436-
.pure[Resource[IO, *]]
436+
.pure[IOResource]
437437
.toResourcePool(
438438
maxSize = 1,
439439
expireAfter = 1.day)
@@ -469,7 +469,7 @@ class ResourcePoolTest extends AsyncFunSuite with Matchers {
469469
val result = for {
470470
deferred0 <- Deferred[IO, Unit].toResource
471471
pool <- ()
472-
.pure[Resource[IO, *]]
472+
.pure[IOResource]
473473
.toResourcePool(
474474
maxSize = 1,
475475
expireAfter = 1.day)
@@ -633,7 +633,7 @@ class ResourcePoolTest extends AsyncFunSuite with Matchers {
633633
test("discard tasks on release") {
634634
val result = for {
635635
result <- ()
636-
.pure[Resource[IO, *]]
636+
.pure[IOResource]
637637
.toResourcePool(
638638
maxSize = 1,
639639
expireAfter = 1.day,

version.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ThisBuild / version := "1.0.5-SNAPSHOT"
1+
ThisBuild / version := "2.0.0"

0 commit comments

Comments
 (0)