All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.tools.nsc.reporters.ConsoleReporter.scala Maven / Gradle / Ivy

/*
 * Scala (https://www.scala-lang.org)
 *
 * Copyright EPFL and Lightbend, Inc.
 *
 * Licensed under Apache License 2.0
 * (http://www.apache.org/licenses/LICENSE-2.0).
 *
 * See the NOTICE file distributed with this work for
 * additional information regarding copyright ownership.
 */

package scala
package tools.nsc
package reporters

import java.io.{BufferedReader, PrintWriter}
import scala.reflect.internal.util.Position

/** This class implements a Reporter that displays messages on a text console. */
class ConsoleReporter(val settings: Settings, val reader: BufferedReader, val writer: PrintWriter, val echoWriter: PrintWriter) extends FilteringReporter with PrintReporter {
  def this(settings: Settings) = this(settings, Console.in, new PrintWriter(Console.err, true), new PrintWriter(Console.out, true))
  def this(settings: Settings, reader: BufferedReader, writer: PrintWriter) = this(settings, reader, writer, writer)

  def doReport(pos: Position, msg: String, severity: Severity): Unit = display(pos, msg, severity)

  override def finish(): Unit = {
    import reflect.internal.util.StringOps.countElementsAsString
    if (!settings.nowarn && hasWarnings)
      echo(countElementsAsString(warningCount, WARNING.toString.toLowerCase))
    if (hasErrors)
      echo(countElementsAsString(errorCount, ERROR.toString.toLowerCase))
    super.finish()
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy