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
- All
Instance Constructors
- new ContextReporter(_errorBuffer: LinkedHashSet[Analyzer.AbsTypeError] = null, _warningBuffer: LinkedHashSet[(Global.Position, String, WarningCategory, Global.Symbol)] = null)
Type Members
- type Error = Analyzer.AbsTypeError
- type Warning = (Global.Position, String, WarningCategory, Global.Symbol)
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 to any2stringadd[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 to ArrowAssoc[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( ... ) @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 to Ensuring[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 to Ensuring[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 to Ensuring[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 to Ensuring[Analyzer.ContextReporter] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): 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]
-
final
def
getClass(): Class[_]
- 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): Unit
-
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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
- def warning(pos: Global.Position, msg: String, category: WarningCategory, site: Global.Symbol): Unit
-
final
def
warningBuffer: LinkedHashSet[(Global.Position, String, WarningCategory, Global.Symbol)]
- Attributes
- protected
- final def warnings: collection.immutable.Seq[Warning]
-
final
def
withFreshErrorBuffer[T](expr: ⇒ T): T
- Annotations
- @inline()
-
def
→[B](y: B): (Analyzer.ContextReporter, B)
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter to ArrowAssoc[Analyzer.ContextReporter] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
Deprecated Value Members
-
def
formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Analyzer.ContextReporter to StringFormat[Analyzer.ContextReporter] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
The Scala compiler and reflection APIs.