summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/reflect/FrontEnd.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-09-26 07:43:48 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-09-27 15:49:01 +0200
commitca9d2149e964604daf3a8d88d6946217ef90c643 (patch)
tree0d285f2f1a28382be9a43cddd8d148a73b7422f5 /src/compiler/scala/tools/reflect/FrontEnd.scala
parent7911f9e85b3798d449d6b551d7c8be15cc63f240 (diff)
downloadscala-ca9d2149e964604daf3a8d88d6946217ef90c643.tar.gz
scala-ca9d2149e964604daf3a8d88d6946217ef90c643.tar.bz2
scala-ca9d2149e964604daf3a8d88d6946217ef90c643.zip
removes front ends from scala-reflect.jar
It was an interesting idea to give macro developers control over front ends, but it hasn't given any visible results. To the contrast, front ends have proven useful for toolboxes to easily control what errors get printed where. Therefore I'm moving front ends to scala-compiler.jar to clean up the API. Yay for scaladoc-driven development!
Diffstat (limited to 'src/compiler/scala/tools/reflect/FrontEnd.scala')
-rw-r--r--src/compiler/scala/tools/reflect/FrontEnd.scala50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/reflect/FrontEnd.scala b/src/compiler/scala/tools/reflect/FrontEnd.scala
new file mode 100644
index 0000000000..f0d3d5973d
--- /dev/null
+++ b/src/compiler/scala/tools/reflect/FrontEnd.scala
@@ -0,0 +1,50 @@
+package scala.tools
+package reflect
+
+import scala.reflect.internal.util.Position
+
+trait FrontEnd {
+ object severity extends Enumeration
+ class Severity(val id: Int) extends severity.Value {
+ var count: Int = 0
+ override def toString() = this match {
+ case INFO => "INFO"
+ case WARNING => "WARNING"
+ case ERROR => "ERROR"
+ case _ => "<unknown>"
+ }
+ }
+ val INFO = new Severity(0)
+ val WARNING = new Severity(1)
+ val ERROR = new Severity(2)
+
+ def hasErrors = ERROR.count > 0
+ def hasWarnings = WARNING.count > 0
+
+ case class Info(val pos: Position, val msg: String, val severity: Severity)
+ val infos = new scala.collection.mutable.LinkedHashSet[Info]
+
+ /** Handles incoming info */
+ def log(pos: Position, msg: String, severity: Severity) {
+ infos += new Info(pos, msg, severity)
+ severity.count += 1
+ display(infos.last)
+ }
+
+ /** Displays incoming info */
+ def display(info: Info): Unit
+
+ /** Services a request to drop into interactive mode */
+ def interactive(): Unit
+
+ /** Refreshes the UI */
+ def flush(): Unit = {}
+
+ /** Resets the reporter */
+ def reset(): Unit = {
+ INFO.count = 0
+ WARNING.count = 0
+ ERROR.count = 0
+ infos.clear()
+ }
+}