aboutsummaryrefslogtreecommitdiff
path: root/sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-11-17 11:51:08 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:07 +0100
commit6acdc1e85f04cc3a240ddb91983588897786d8ca (patch)
treea86262ad133d0dc3af19919cdc6ff77d1044003a /sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala
parentc061baf8c4a81f2b1505c30a5240857411981f62 (diff)
downloaddotty-6acdc1e85f04cc3a240ddb91983588897786d8ca.tar.gz
dotty-6acdc1e85f04cc3a240ddb91983588897786d8ca.tar.bz2
dotty-6acdc1e85f04cc3a240ddb91983588897786d8ca.zip
Move bridge to correct location, fix unmanaged sources in build
Diffstat (limited to 'sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala')
-rw-r--r--sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala44
1 files changed, 44 insertions, 0 deletions
diff --git a/sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala b/sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala
new file mode 100644
index 000000000..c0a56ec82
--- /dev/null
+++ b/sbt-bridge/src/sbt-test/compilerReporter/simple/project/Reporter.scala
@@ -0,0 +1,44 @@
+import sbt._
+import Keys._
+import KeyRanks.DTask
+
+object Reporter {
+ import xsbti.{Reporter, Problem, Position, Severity, Maybe}
+
+ lazy val check = TaskKey[Unit]("check", "make sure compilation info are forwared to sbt")
+
+ // compilerReporter is marked private in sbt
+ lazy val compilerReporter = TaskKey[Option[xsbti.Reporter]]("compilerReporter", "Experimental hook to listen (or send) compilation failure messages.", DTask)
+
+ lazy val reporter =
+ Some(new xsbti.Reporter {
+ private val buffer = collection.mutable.ArrayBuffer.empty[Problem]
+ def reset(): Unit = buffer.clear()
+ def hasErrors: Boolean = buffer.exists(_.severity == Severity.Error)
+ def hasWarnings: Boolean = buffer.exists(_.severity == Severity.Warn)
+ def printSummary(): Unit = println(problems.mkString(System.lineSeparator))
+ def problems: Array[Problem] = buffer.toArray
+ def log(pos: Position, msg: String, sev: Severity): Unit = {
+ object MyProblem extends Problem {
+ def category: String = null
+ def severity: Severity = sev
+ def message: String = msg
+ def position: Position = pos
+ override def toString = s"custom: $position:$severity: $message"
+ }
+ buffer.append(MyProblem)
+ }
+ def comment(pos: xsbti.Position, msg: String): Unit = ()
+ })
+
+ lazy val checkSettings = Seq(
+ compilerReporter in (Compile, compile) := reporter,
+ check <<= (compile in Compile).mapFailure( _ => {
+ val problems = reporter.get.problems
+ println(problems.toList)
+ assert(problems.size == 2)
+ assert(problems.count(_.severity == Severity.Error) == 1) // not found: er1,
+ assert(problems.count(_.severity == Severity.Warn) == 1) // `with' as a type operator has been deprecated; use `&' instead,
+ })
+ )
+} \ No newline at end of file