diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-09-26 07:43:48 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-09-27 15:49:01 +0200 |
commit | ca9d2149e964604daf3a8d88d6946217ef90c643 (patch) | |
tree | 0d285f2f1a28382be9a43cddd8d148a73b7422f5 /src/compiler/scala/tools/reflect/FrontEnd.scala | |
parent | 7911f9e85b3798d449d6b551d7c8be15cc63f240 (diff) | |
download | scala-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.scala | 50 |
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() + } +} |