abstract class ContextReporter extends AnyRef
A reporter for use during type checking. It has multiple modes for handling errors.
The default (immediate mode) is to send the error to the global reporter. When switched into buffering mode via makeBuffering, errors and warnings are buffered and not be reported (there's a special case for ambiguity errors for some reason: those are force to the reporter when context.ambiguousErrors, or else they are buffered -- TODO: can we simplify this?)
When using the type checker after typers, an error results in a TypeError being thrown. TODO: get rid of this mode.
To handle nested contexts, reporters share buffers. TODO: only buffer in BufferingReporter, emit immediately in ImmediateReporter
- Source
- Contexts.scala
- Alphabetic
- By Inheritance
- ContextReporter
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ContextReporter(_errorBuffer: LinkedHashSet[Analyzer.AbsTypeError] = null, _warningBuffer: LinkedHashSet[(Global.Position, String)] = null)
Type Members
- type Error = Analyzer.AbsTypeError
- type Warning = (Global.Position, String)
Abstract Value Members
- abstract def error(pos: Global.Position, msg: String): Unit
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toany2stringadd[Analyzer.ContextReporter] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (Analyzer.ContextReporter, B)
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toArrowAssoc[Analyzer.ContextReporter] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def addDiagString(msg: String)(implicit context: Analyzer.Context): String
- Attributes
- protected
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def clearAll(): Unit
- final def clearAllErrors(): Unit
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def echo(pos: Global.Position, msg: String): Unit
- def echo(msg: String): Unit
- final def emitWarnings(): Unit
- def ensuring(cond: (Analyzer.ContextReporter) => Boolean, msg: => Any): Analyzer.ContextReporter
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toEnsuring[Analyzer.ContextReporter] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (Analyzer.ContextReporter) => Boolean): Analyzer.ContextReporter
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toEnsuring[Analyzer.ContextReporter] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): Analyzer.ContextReporter
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toEnsuring[Analyzer.ContextReporter] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): Analyzer.ContextReporter
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toEnsuring[Analyzer.ContextReporter] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def errorBuffer: LinkedHashSet[Analyzer.AbsTypeError]
- Attributes
- protected
- final def errors: collection.immutable.Seq[Error]
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def firstError: Option[Analyzer.AbsTypeError]
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toStringFormat[Analyzer.ContextReporter] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def handleSuppressedAmbiguous(err: Analyzer.AbsAmbiguousTypeError): Unit
- Attributes
- protected
- final def hasErrors: Boolean
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def isBuffering: Boolean
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isThrowing: Boolean
- def issue(err: Analyzer.AbsTypeError)(implicit context: Analyzer.Context): Unit
- final def issueAmbiguousError(err: Analyzer.AbsAmbiguousTypeError)(implicit context: Analyzer.Context): Unit
Emit an ambiguous error according to context.ambiguousErrors
Emit an ambiguous error according to context.ambiguousErrors
- when true, use global.reporter regardless of whether we're buffering (TODO: can we change this?)
- else, let this context reporter decide
- def makeBuffering: Analyzer.ContextReporter
- def makeImmediate: Analyzer.ContextReporter
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def propagateErrorsTo[T](target: Analyzer.ContextReporter): Unit
- def propagateImplicitTypeErrorsTo(target: Analyzer.ContextReporter): Unit
- def reportFirstDivergentError(fun: Global.Tree, param: Global.Symbol, paramTp: Global.Type)(implicit context: Analyzer.Context): Unit
- def retainDivergentErrorsExcept(saved: Analyzer.DivergentImplicitTypeError): LinkedHashSet[Analyzer.AbsTypeError]
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def warning(pos: Global.Position, msg: String): Unit
- final def warningBuffer: LinkedHashSet[(Global.Position, String)]
- Attributes
- protected
- final def warnings: collection.immutable.Seq[Warning]
- final def withFreshErrorBuffer[T](expr: => T): T
- Annotations
- @inline()
Deprecated Value Members
- def →[B](y: B): (Analyzer.ContextReporter, B)
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter toArrowAssoc[Analyzer.ContextReporter] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.
The Scala compiler and reflection APIs.