aboutsummaryrefslogtreecommitdiff
path: root/project/SparkBuild.scala
diff options
context:
space:
mode:
Diffstat (limited to 'project/SparkBuild.scala')
-rw-r--r--project/SparkBuild.scala33
1 files changed, 32 insertions, 1 deletions
diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala
index 12828547d7..61a05d375d 100644
--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -154,7 +154,38 @@ object SparkBuild extends PomBuild {
if (major.toInt >= 1 && minor.toInt >= 8) Seq("-Xdoclint:all", "-Xdoclint:-missing") else Seq.empty
},
- javacOptions in Compile ++= Seq("-encoding", "UTF-8")
+ javacOptions in Compile ++= Seq("-encoding", "UTF-8"),
+
+ // Implements -Xfatal-warnings, ignoring deprecation warnings.
+ // Code snippet taken from https://issues.scala-lang.org/browse/SI-8410.
+ compile in Compile := {
+ val analysis = (compile in Compile).value
+ val s = streams.value
+
+ def logProblem(l: (=> String) => Unit, f: File, p: xsbti.Problem) = {
+ l(f.toString + ":" + p.position.line.fold("")(_ + ":") + " " + p.message)
+ l(p.position.lineContent)
+ l("")
+ }
+
+ var failed = 0
+ analysis.infos.allInfos.foreach { case (k, i) =>
+ i.reportedProblems foreach { p =>
+ val deprecation = p.message.contains("is deprecated")
+
+ if (!deprecation) {
+ failed = failed + 1
+ }
+
+ logProblem(if (deprecation) s.log.warn else s.log.error, k, p)
+ }
+ }
+
+ if (failed > 0) {
+ sys.error(s"$failed fatal warnings")
+ }
+ analysis
+ }
)
def enable(settings: Seq[Setting[_]])(projectRef: ProjectRef) = {