Skip to content

Commit

Permalink
Merge pull request #42 from kubukoz/scala3-flags
Browse files Browse the repository at this point in the history
Add -source future, strictEquality
  • Loading branch information
DavidGregory084 committed May 26, 2021
2 parents 067eef8 + 06ae77e commit f055cd7
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions src/main/scala/io/github/davidgregory084/TpolecatPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ object TpolecatPlugin extends AutoPlugin {
ScalacOption("-explain", addedIn = Some(V3_0_0)), // Explain errors in more detail.
ScalacOption("-feature"), // Emit warning and location for usages of features that should be imported explicitly.
ScalacOption("-language:existentials", removedIn = Some(V3_0_0)), // Existential types (besides wildcard types) can be written and inferred
ScalacOption("-language:experimental.macros", removedIn = Some(V3_0_0)), // Allow macro definition (besides implementation and application)
ScalacOption("-language:higherKinds", removedIn = Some(V3_0_0)), // Allow higher-kinded types
ScalacOption("-language:implicitConversions", removedIn = Some(V3_0_0)), // Allow definition of implicit functions called views
ScalacOption("-language:existentials,experimental.macros,higherKinds,implicitConversions", addedIn = Some(V3_0_0)), // the four options above, dotty style
ScalacOption("-language:experimental.macros"), // Allow macro definition (besides implementation and application)
ScalacOption("-language:higherKinds"), // Allow higher-kinded types
ScalacOption("-language:implicitConversions"), // Allow definition of implicit functions called views
ScalacOption("-source future", addedIn = Some(V3_0_0)), // Emit warnings for features that are planned to be removed (e.g. extending non-open classes outside their files).
ScalacOption("-unchecked"), // Enable additional warnings where generated code depends on assumptions.
ScalacOption("-Xcheckinit", removedIn = Some(V3_0_0)), // Wrap field accessors to throw an exception on uninitialized access.
ScalacOption("-Xfatal-warnings"), // Fail the compilation if there are any warnings.
Expand Down Expand Up @@ -132,23 +132,24 @@ object TpolecatPlugin extends AutoPlugin {
def scalacOptionsFor(version: String): Seq[String] =
List(
"-encoding", "utf8" // Specify character encoding used by source files.
) ++ ((CrossVersion.partialVersion(version), version.split('.')) match {
case (Some((0, min)), _) => // dotty prereleases use 0 as major version
allScalacOptions
.filter(validFor(V3_0_0)) // treat dotty prereleases as 3.0.0
.map(_.name)
case (Some((maj, min)), Array(maj2, min2, patch)) if maj.toString == maj2 && min.toString == min2 =>
allScalacOptions
.filter(validFor(Version(maj, min, Try(patch.toLong).getOrElse(0))))
.map(_.name)
case (Some((maj, min)), _) =>
allScalacOptions
.filter(validFor(Version(maj, min, 0)))
.map(_.name)
case (None, _) =>
Nil
})
) ++ {

val flags = (CrossVersion.partialVersion(version), version.split('.')) match {
case (Some((0, min)), _) => // dotty prereleases use 0 as major version
allScalacOptions
.filter(validFor(V3_0_0)) // treat dotty prereleases as 3.0.0
case (Some((maj, min)), Array(maj2, min2, patch)) if maj.toString == maj2 && min.toString == min2 =>
allScalacOptions
.filter(validFor(Version(maj, min, Try(patch.toLong).getOrElse(0))))
case (Some((maj, min)), _) =>
allScalacOptions
.filter(validFor(Version(maj, min, 0)))
case (None, _) =>
Nil
}

flags.flatMap(_.name.split("\\s+"))
}
val filterConsoleScalacOptions = { options: Seq[String] =>
options.filterNot(Set(
"-Werror",
Expand Down

0 comments on commit f055cd7

Please sign in to comment.