Skip to content

Commit 54d4015

Browse files
committed
Add Scala 3 support
1 parent 2f6c215 commit 54d4015

4 files changed

Lines changed: 53 additions & 41 deletions

File tree

build.sbt

Lines changed: 44 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import scoverage._
33
import xerial.sbt.Sonatype._
44

55
def scala213 = Def.setting(scalaVersion.value.startsWith("2.13"))
6+
def scala3 = Def.setting(scalaVersion.value.startsWith("3."))
7+
68
lazy val crossVersionSourcesSettings =
79
Seq(Compile, Test).map { sc =>
810
(sc / unmanagedSourceDirectories) ++= {
911
(sc / unmanagedSourceDirectories).value.flatMap { dir =>
1012
if (dir.getPath.endsWith("scala"))
11-
Seq(new File(dir.getPath + (if (scala213.value) "_2.13+" else "_2.13-")))
13+
Seq(new File(dir.getPath + (if (scala213.value || scala3.value) "_2.13+" else "_2.13-")))
1214
else
1315
Seq.empty
1416
}
@@ -54,41 +56,51 @@ val publishSettings = sonatypeSettings ++ Seq(
5456
val commonSettings = Seq(
5557
organization := "com.daodecode",
5658
scalaVersion := "2.13.11",
57-
crossScalaVersions := Seq(scalaVersion.value, "2.12.18"),
59+
crossScalaVersions := Seq(scalaVersion.value, "2.12.18", "3.3.0"),
5860
scalafmtConfig := Some(scalaj.base / "scalafmt-config/.scalafmt.conf")
5961
) ++ releaseSettings ++ crossVersionSourcesSettings
6062

63+
val Scala212ScalacOptions = Seq(
64+
"-Xlint",
65+
"-unchecked",
66+
"-deprecation",
67+
"-Xfatal-warnings",
68+
"-Ywarn-inaccessible",
69+
"-Ywarn-dead-code",
70+
"-Ywarn-adapted-args",
71+
"-Ywarn-nullary-unit",
72+
"-feature",
73+
"-Ywarn-unused",
74+
"-Ywarn-unused-import",
75+
"-encoding", "UTF-8"
76+
)
77+
78+
val Scala213ScalacOptions = Seq(
79+
"-Xlint",
80+
"-unchecked",
81+
"-deprecation",
82+
"-Xfatal-warnings",
83+
"-Ywarn-dead-code",
84+
"-feature",
85+
"-Ywarn-unused",
86+
"-encoding", "UTF-8",
87+
"-Wconf:origin=scala.collection.compat.*:s"
88+
)
89+
90+
val Scala3ScalacOptions = Seq(
91+
"-unchecked",
92+
"-deprecation",
93+
"-Werror",
94+
"-feature",
95+
"-encoding", "UTF-8"
96+
)
97+
6198
val moduleSettings = commonSettings ++ Seq(
62-
scalacOptions :=
63-
(if (scala213.value)
64-
Seq(
65-
"-Xlint",
66-
"-unchecked",
67-
"-deprecation",
68-
"-Xfatal-warnings",
69-
"-Ywarn-dead-code",
70-
"-feature",
71-
"-Ywarn-unused",
72-
"-encoding",
73-
"UTF-8",
74-
"-Wconf:origin=scala.collection.compat.*:s"
75-
)
76-
else
77-
Seq(
78-
"-Xlint",
79-
"-unchecked",
80-
"-deprecation",
81-
"-Xfatal-warnings",
82-
"-Ywarn-inaccessible",
83-
"-Ywarn-dead-code",
84-
"-Ywarn-adapted-args",
85-
"-Ywarn-nullary-unit",
86-
"-feature",
87-
"-Ywarn-unused",
88-
"-Ywarn-unused-import",
89-
"-encoding",
90-
"UTF-8"
91-
)),
99+
scalacOptions := (
100+
if (scala3.value) Scala3ScalacOptions
101+
else if (scala213.value) Scala213ScalacOptions
102+
else Scala212ScalacOptions
103+
),
92104
libraryDependencies ++= Seq(
93105
"org.scalatest" %% "scalatest" % "3.2.16" % "test"
94106
)

scalaj-collection/src/main/scala/com/daodecode/scalaj/collection/package.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ package object collection extends StdLibDecorators with JavaAliases {
1313
/******************************************** deepAsJava converters ********************************************/
1414
implicit class DeepSeqAsJavaList[A](val scalaSeq: GenSeq[A]) extends AnyVal {
1515
private def toJava[T](genSeq: GenSeq[T]): JList[T] = genSeq match {
16-
case buffer: MBuffer[T] => buffer.asJava
17-
case mSeq: MSeq[T] => mSeq.asJava
16+
case buffer: MBuffer[_] => buffer.asJava.asInstanceOf[JList[T]]
17+
case mSeq: MSeq[_] => mSeq.asJava.asInstanceOf[JList[T]]
1818
case _ => genSeq.asJava
1919
}
2020

@@ -104,7 +104,7 @@ package object collection extends StdLibDecorators with JavaAliases {
104104

105105
implicit class DeepMapAsJavaMap[A, B](val scalaMap: GenMap[A, B]) extends AnyVal {
106106
private def toJava[T, U](genMap: GenMap[T, U]): JMap[T, U] = genMap match {
107-
case mMap: MMap[T, U] => mMap.asJava
107+
case mMap: MMap[_, _] => mMap.asJava.asInstanceOf[JMap[T, U]]
108108
case _ => genMap.asJava
109109
}
110110

scalaj-collection/src/test/scala_2.13+/com/daodecode/scalaj/collection/test/SimpleJConvertersTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,12 @@ class SimpleJConvertersTest extends ScalaJSpec {
208208
"return same array with self conversions" in {
209209
{
210210
val scalaArray = Array("ss")
211-
scalaArray.deepAsJava should be theSameInstanceAs scalaArray
211+
scalaArray.deepAsJava[String] should be theSameInstanceAs scalaArray
212212
}
213213
{
214214
class A
215215
val scalaArray = Array(new A)
216-
scalaArray.deepAsJava should be theSameInstanceAs scalaArray
216+
scalaArray.deepAsJava[A] should be theSameInstanceAs scalaArray
217217
}
218218
}
219219

scalaj-collection/src/test/scala_2.13+/com/daodecode/scalaj/collection/test/SimpleSConvertersTest.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,20 @@ class SimpleSConvertersTest extends ScalaJSpec with JListBuilder with JSetBuilde
115115
"return same array with primitives and self conversions" in {
116116
{
117117
val javaArray = Array[Int](1)
118-
javaArray.deepAsScala should be theSameInstanceAs javaArray
118+
javaArray.deepAsScala[Int] should be theSameInstanceAs javaArray
119119
}
120120
{
121121
val javaArray = Array[Char]('s')
122-
javaArray.deepAsScala should be theSameInstanceAs javaArray
122+
javaArray.deepAsScala[Char] should be theSameInstanceAs javaArray
123123
}
124124
{
125125
val javaArray = Array[Double](12d)
126-
javaArray.deepAsScala should be theSameInstanceAs javaArray
126+
javaArray.deepAsScala[Double] should be theSameInstanceAs javaArray
127127
}
128128
{
129129
class A
130130
val javaArray = Array[A](new A)
131-
javaArray.deepAsScala should be theSameInstanceAs javaArray
131+
javaArray.deepAsScala[A] should be theSameInstanceAs javaArray
132132
}
133133
}
134134
}

0 commit comments

Comments
 (0)