diff options
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.scala | 38 |
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) + } + +} |