scala.reflect.internal.Reporting.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spark-core Show documentation
Show all versions of spark-core Show documentation
Shaded version of Apache Spark 2.x.x for Presto
The newest version!
/* NSC -- new Scala compiler
* Copyright 2005-2014 LAMP/EPFL, Typesafe Inc.
* @author Adriaan Moors
*/
package scala
package reflect
package internal
/** Provides delegates to the reporter doing the actual work.
* All forwarding methods should be marked final,
* but some subclasses out of our reach stil override them.
*
* Eventually, this interface should be reduced to one method: `reporter`,
* and clients should indirect themselves (reduce duplication of forwarders).
*/
trait Reporting { self : Positions =>
def reporter: Reporter
def currentRun: RunReporting
trait RunReporting {
val reporting: PerRunReporting = PerRunReporting
}
type PerRunReporting <: PerRunReportingBase
protected def PerRunReporting: PerRunReporting
abstract class PerRunReportingBase {
def deprecationWarning(pos: Position, msg: String): Unit
/** Have we already supplemented the error message of a compiler crash? */
private[this] var supplementedError = false
def supplementErrorMessage(errorMessage: String): String =
if (supplementedError) errorMessage
else {
supplementedError = true
supplementTyperState(errorMessage)
}
}
// overridden in Global
def supplementTyperState(errorMessage: String): String = errorMessage
def supplementErrorMessage(errorMessage: String) = currentRun.reporting.supplementErrorMessage(errorMessage)
@deprecatedOverriding("This forwards to the corresponding method in reporter -- override reporter instead", "2.11.2")
def inform(msg: String): Unit = inform(NoPosition, msg)
@deprecatedOverriding("This forwards to the corresponding method in reporter -- override reporter instead", "2.11.2")
def warning(msg: String): Unit = warning(NoPosition, msg)
// globalError(msg: String) used to abort -- not sure that was a good idea, so I made it more regular
// (couldn't find any uses that relied on old behavior)
@deprecatedOverriding("This forwards to the corresponding method in reporter -- override reporter instead", "2.11.2")
def globalError(msg: String): Unit = globalError(NoPosition, msg)
def abort(msg: String): Nothing = {
val augmented = supplementErrorMessage(msg)
// Needs to call error to make sure the compile fails.
globalError(augmented)
throw new FatalError(augmented)
}
@deprecatedOverriding("This forwards to the corresponding method in reporter -- override reporter instead", "2.11.2")
def inform(pos: Position, msg: String) = reporter.echo(pos, msg)
@deprecatedOverriding("This forwards to the corresponding method in reporter -- override reporter instead", "2.11.2")
def warning(pos: Position, msg: String) = reporter.warning(pos, msg)
@deprecatedOverriding("This forwards to the corresponding method in reporter -- override reporter instead", "2.11.2")
def globalError(pos: Position, msg: String) = reporter.error(pos, msg)
}
import util.Position
/** Report information, warnings and errors.
*
* This describes the (future) external interface for issuing information, warnings and errors.
* Currently, scala.tools.nsc.Reporter is used by sbt/ide/partest.
*/
abstract class Reporter {
protected def info0(pos: Position, msg: String, severity: Severity, force: Boolean): Unit
def echo(pos: Position, msg: String): Unit = info0(pos, msg, INFO, force = true)
def warning(pos: Position, msg: String): Unit = info0(pos, msg, WARNING, force = false)
def error(pos: Position, msg: String): Unit = info0(pos, msg, ERROR, force = false)
type Severity
val INFO: Severity
val WARNING: Severity
val ERROR: Severity
def count(severity: Severity): Int
def resetCount(severity: Severity): Unit
def errorCount: Int = count(ERROR)
def warningCount: Int = count(WARNING)
def hasErrors: Boolean = count(ERROR) > 0
def hasWarnings: Boolean = count(WARNING) > 0
def reset(): Unit = {
resetCount(INFO)
resetCount(WARNING)
resetCount(ERROR)
}
def flush(): Unit = { }
}
// TODO: move into superclass once partest cuts tie on Severity
abstract class ReporterImpl extends Reporter {
class Severity(val id: Int)(name: String) { var count: Int = 0 ; override def toString = name}
object INFO extends Severity(0)("INFO")
object WARNING extends Severity(1)("WARNING")
object ERROR extends Severity(2)("ERROR")
def count(severity: Severity): Int = severity.count
def resetCount(severity: Severity): Unit = severity.count = 0
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy