summaryrefslogtreecommitdiff
path: root/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/LoggerErrorManager.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/LoggerErrorManager.scala')
-rw-r--r--tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/LoggerErrorManager.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/LoggerErrorManager.scala b/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/LoggerErrorManager.scala
new file mode 100644
index 0000000..d51dd7b
--- /dev/null
+++ b/tools/jvm/src/main/scala/scala/scalajs/tools/optimizer/LoggerErrorManager.scala
@@ -0,0 +1,38 @@
+package scala.scalajs.tools.optimizer
+
+import com.google.javascript.jscomp.{ BasicErrorManager, CheckLevel, JSError }
+
+import scala.scalajs.tools.logging.Logger
+
+/** A Google Closure Error Manager that forwards to a tools.logging.Logger */
+class LoggerErrorManager(private val log: Logger) extends BasicErrorManager {
+
+ /** Ugly hack to disable FRACTIONAL_BITWISE_OPERAND warnings. Since its
+ * DiagnosticType (PeepholeFoldConstants.FRACTIONAL_BITWISE_OPERAND) is
+ * package private.
+ */
+ override def report(level: CheckLevel, error: JSError): Unit = {
+ if (error.getType.key == "JSC_FRACTIONAL_BITWISE_OPERAND")
+ super.report(CheckLevel.OFF, error)
+ else
+ super.report(level, error)
+ }
+
+ def println(level: CheckLevel, error: JSError): Unit = level match {
+ case CheckLevel.WARNING => log.warn (s"Closure: ${error}")
+ case CheckLevel.ERROR => log.error(s"Closure: ${error}")
+ case CheckLevel.OFF =>
+ }
+
+ protected def printSummary(): Unit = {
+ val msg = s"Closure: ${getErrorCount} error(s), ${getWarningCount} warning(s)"
+
+ if (getErrorCount > 0)
+ log.error(msg)
+ else if (getWarningCount > 0)
+ log.warn(msg)
+ else
+ log.info(msg)
+ }
+
+}