Skip to content

Commit 636a9ae

Browse files
authored
Merge pull request #398 from buildo/scalac-options-scala3
Add Scala 3 support for sbt-buildo
2 parents 08677a1 + 4d8c59c commit 636a9ae

File tree

1 file changed

+38
-21
lines changed

1 file changed

+38
-21
lines changed

sbt-buildo/src/main/scala/buildo/ScalaSettingPlugin.scala

+38-21
Original file line numberDiff line numberDiff line change
@@ -14,39 +14,56 @@ object ScalaSettingPlugin extends AutoPlugin {
1414
organization := "io.buildo",
1515
)
1616

17-
def crossFlags(scalaVersion: String): Seq[String] =
17+
val baseScalaOptions = Seq(
18+
"-encoding",
19+
"utf8",
20+
"-feature",
21+
"-deprecation",
22+
"-language:higherKinds",
23+
"-language:implicitConversions",
24+
)
25+
26+
val baseScala2Options = baseScalaOptions ++ Seq(
27+
"-unchecked",
28+
"-Xlint",
29+
"-Ywarn-dead-code",
30+
"-Ywarn-numeric-widen",
31+
"-Ywarn-value-discard",
32+
"-Ywarn-unused",
33+
"-Yrangepos",
34+
)
35+
36+
val baseScala3Options = baseScalaOptions ++ Seq(
37+
"-Ykind-projector",
38+
)
39+
40+
def crossScalacOptions(scalaVersion: String): Seq[String] =
1841
CrossVersion.partialVersion(scalaVersion) match {
1942
case Some((2, 12)) =>
20-
Seq("-opt-warnings", "-Ypartial-unification", "-Xfuture", "-Ywarn-unused-import")
21-
case Some((2, 13)) => Seq("-Ymacro-annotations", "-Ywarn-unused:imports")
43+
baseScala2Options ++
44+
Seq("-opt-warnings", "-Ypartial-unification", "-Xfuture", "-Ywarn-unused-import")
45+
case Some((2, 13)) => baseScala2Options ++ Seq("-Ymacro-annotations", "-Ywarn-unused:imports")
46+
case Some((3, _)) => baseScala3Options
2247
case _ => Nil
2348
}
2449

2550
lazy val baseSettings: Seq[Def.Setting[_]] = Seq(
2651
cancelable in Global := true,
27-
scalacOptions ++= Seq(
28-
"-encoding",
29-
"utf8",
30-
"-deprecation",
31-
"-feature",
32-
"-unchecked",
33-
"-Xlint",
34-
"-language:higherKinds",
35-
"-language:implicitConversions",
36-
"-Ywarn-dead-code",
37-
"-Ywarn-numeric-widen",
38-
"-Ywarn-value-discard",
39-
"-Ywarn-unused",
40-
"-Yrangepos",
41-
) ++ crossFlags(scalaVersion.value),
52+
scalacOptions ++= crossScalacOptions(scalaVersion.value),
4253
resolvers += Resolver.jcenterRepo,
4354
libraryDependencies ++= {
4455
CrossVersion.partialVersion(scalaVersion.value) match {
45-
case Some((2, n)) if n >= 13 => Nil
46-
case _ =>
56+
case Some((2, n)) if n < 13 =>
4757
compilerPlugin(("org.scalamacros" % "paradise" % "2.1.1").cross(CrossVersion.full)) :: Nil
58+
case _ => Nil
59+
}
60+
},
61+
libraryDependencies ++= {
62+
CrossVersion.partialVersion(scalaVersion.value) match {
63+
case Some((2, _)) =>
64+
compilerPlugin(("org.typelevel" % "kind-projector" % "0.11.3").cross(CrossVersion.full)) :: Nil
65+
case _ => Nil
4866
}
4967
},
50-
addCompilerPlugin(("org.typelevel" % "kind-projector" % "0.11.3").cross(CrossVersion.full)),
5168
)
5269
}

0 commit comments

Comments
 (0)