dotty.tools.dotc.reporting

Type members

Classlikes

class AbstractMemberMayNotHaveModifier(sym: Symbol, flag: FlagSet)(implicit ctx: Context) extends SyntaxMsg
class AbstractOverrideOnlyInTraits(sym: Symbol)(implicit ctx: Context) extends SyntaxMsg

This class mixes in a few standard traits, so that it is easier to extend from Java.

This class mixes in a few standard traits, so that it is easier to extend from Java.

class AlreadyDefined(name: Name, owner: Symbol, conflicting: Symbol)(using `x$4`: Context) extends NamingMsg
class AmbiguousOverload(tree: Tree, val alternatives: List[SingleDenotation], pt: Type, addendum: String)(implicit ctx: Context) extends ReferenceMsg
class AmbiguousReference(name: Name, newPrec: BindingPrec, prevPrec: BindingPrec, prevCtx: Context)(using `x$5`: Context) extends ReferenceMsg
class AnonymousFunctionMissingParamType(param: ValDef, args: List[Tree], tree: Function, pt: Type)(using `x$5`: Context) extends TypeMsg
class AnonymousInstanceCannotBeEmpty(impl: Template)(using `x$2`: Context) extends SyntaxMsg
class BadSymbolicReference(denot: SymDenotation)(using `x$2`: Context) extends ReferenceMsg
class ByNameParameterNotSupported(tpe: TypTree)(using `x$2`: Context) extends SyntaxMsg
class CannotExtendAnyVal(sym: Symbol)(using `x$2`: Context) extends SyntaxMsg
class CannotExtendContextFunction(sym: Symbol)(using `x$2`: Context) extends SyntaxMsg
class CannotExtendJavaEnum(sym: Symbol)(using `x$2`: Context) extends SyntaxMsg
class CannotHaveSameNameAs(sym: Symbol, cls: Symbol, reason: Reason)(using `x$4`: Context) extends SyntaxMsg
Companion
object
Companion
class
class CantInstantiateAbstractClassOrTrait(cls: Symbol, isTrait: Boolean)(using `x$3`: Context) extends TypeMsg
class CaseClassInInlinedCode(tree: Tree)(using `x$2`: Context) extends SyntaxMsg
class CaseClassMissingParamList(cdef: TypeDef)(using `x$2`: Context) extends SyntaxMsg
class ClassAndCompanionNameClash(cls: Symbol, other: Symbol)(using `x$3`: Context) extends NamingMsg
class ClassCannotExtendEnum(cls: Symbol, parent: Symbol)(using `x$3`: Context) extends SyntaxMsg

This class implements a Reporter that displays messages on a text console

This class implements a Reporter that displays messages on a text console

class CyclicInheritance(symbol: Symbol, addendum: => String)(using `x$3`: Context) extends SyntaxMsg
abstract class CyclicMsg(errorId: ErrorMessageID) extends Message
class CyclicReferenceInvolving(denot: SymDenotation)(using `x$2`: Context) extends CyclicMsg
class CyclicReferenceInvolvingImplicit(cycleSym: Symbol)(using `x$2`: Context) extends CyclicMsg
class DanglingThisInPath(using `x$1`: Context) extends SyntaxMsg
abstract class DeclarationMsg(errorId: ErrorMessageID) extends Message
class DeprecatedWithOperator(using `x$1`: Context) extends SyntaxMsg
object Diagnostic
Companion
class
class Diagnostic(val msg: Message, val pos: SourcePosition, val level: Int) extends Exception with Diagnostic
Companion
object
class DoesNotConformToBound(tpe: Type, which: String, bound: Type)(using `x$4`: Context) extends TypeMismatchMsg
class DoesNotConformToSelfType(category: String, selfType: Type, cls: Symbol, otherSelf: Type, relation: String, other: Symbol)(implicit ctx: Context) extends TypeMismatchMsg
class DoesNotConformToSelfTypeCantBeInstantiated(tp: Type, selfType: Type)(implicit ctx: Context) extends TypeMismatchMsg
class DoubleDefinition(decl: Symbol, previousDecl: Symbol, base: Symbol)(using `x$4`: Context) extends NamingMsg
class DuplicateBind(bind: Bind, tree: CaseDef)(using `x$3`: Context) extends NamingMsg
class DuplicateNamedTypeParameter(name: Name)(using `x$2`: Context) extends SyntaxMsg
class EarlyDefinitionsNotSupported(using `x$1`: Context) extends SyntaxMsg
class EmptyCatchAndFinallyBlock(tryBody: Tree)(using `x$2`: Context) extends EmptyCatchOrFinallyBlock
class EmptyCatchBlock(tryBody: Tree)(using `x$2`: Context) extends EmptyCatchOrFinallyBlock
abstract class EmptyCatchOrFinallyBlock(tryBody: Tree, errNo: ErrorMessageID)(using `x$3`: Context) extends SyntaxMsg
class EnumerationsShouldNotBeEmpty(cdef: TypeDef)(using `x$2`: Context) extends SyntaxMsg

Unique IDs identifying the messages

Unique IDs identifying the messages

class ExpectedTokenButFound(expected: Token, found: Token)(using `x$3`: Context) extends SyntaxMsg
class ExpectedTypeBoundOrEquals(found: Token)(using `x$2`: Context) extends SyntaxMsg

A re-usable Reporter used in Contexts#test

A re-usable Reporter used in Contexts#test

class ExtendFinalClass(clazz: Symbol, finalClazz: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ExtensionCanOnlyHaveDefs(mdef: Tree)(using `x$2`: Context) extends SyntaxMsg
class ExtensionMethodCannotHaveTypeParams(mdef: DefDef)(using `x$2`: Context) extends SyntaxMsg
class FailureToEliminateExistential(tp: Type, tp1: Type, tp2: Type, boundSyms: List[Symbol])(using `x$5`: Context) extends Message
class ForwardReferenceExtendsOverDefinition(value: Symbol, definition: Symbol)(using `x$3`: Context) extends ReferenceMsg

This trait implements isHidden so that we avoid reporting non-sensical messages.

This trait implements isHidden so that we avoid reporting non-sensical messages.

class IdentifierExpected(identifier: String)(using `x$2`: Context) extends SyntaxMsg
class IllegalCyclicTypeReference(sym: Symbol, where: String, lastChecked: Type)(using `x$4`: Context) extends CyclicMsg
class IllegalLiteral(using `x$1`: Context) extends SyntaxMsg
class IllegalParameterInit(found: Type, expected: Type, param: Symbol, cls: Symbol)(using `x$5`: Context) extends TypeMismatchMsg
class IllegalRedefinitionOfStandardKind(kindType: String, name: Name)(using `x$3`: Context) extends SyntaxMsg
class IllegalStartOfSimplePattern(using `x$1`: Context) extends SyntaxMsg
class IllegalStartOfStatement(what: String, isModifier: Boolean, isStat: Boolean)(using `x$4`: Context) extends SyntaxMsg
class IllegalStartSimpleExpr(illegalToken: String)(using `x$2`: Context) extends SyntaxMsg
class IllegalSuperAccessor(base: Symbol, memberName: Name, targetName: Name, acc: Symbol, accTp: Type, other: Symbol, otherTp: Type)(using `x$8`: Context) extends DeclarationMsg
class ImplicitCaseClass(cdef: TypeDef)(using `x$2`: Context) extends SyntaxMsg
class ImportRenamedTwice(ident: Ident)(using `x$2`: Context) extends SyntaxMsg
class InterpolatedStringError(implicit ctx: Context) extends SyntaxMsg
class InvalidReferenceInImplicitNotFoundAnnotation(typeVar: String, owner: String)(using `x$3`: Context) extends ReferenceMsg
class JavaEnumParentArgs(parent: Type)(using `x$2`: Context) extends TypeMsg
class JavaSymbolIsNotAValue(symbol: Symbol)(using `x$2`: Context) extends TypeMsg
class LazyStaticField(using `x$1`: Context) extends SyntaxMsg
class MatchCaseOnlyNullWarning(using `x$1`: Context) extends PatternMatchMsg
class MatchCaseUnreachable(using `x$1`: Context) extends Message
class MatchableWarning(tp: Type, pattern: Boolean)(using `x$3`: Context) extends TypeMsg
class MemberWithSameNameAsStatic(using `x$1`: Context) extends SyntaxMsg
object Message
Companion
class
abstract class Message(val errorId: ErrorMessageID)

A Message contains all semantic information necessary to easily comprehend what caused the message to be logged. Each message can be turned into a Diagnostic which contains the log level and can later be consumed by a subclass of Reporter. However, the error position is only part of Diagnostic, not Message.

A Message contains all semantic information necessary to easily comprehend what caused the message to be logged. Each message can be turned into a Diagnostic which contains the log level and can later be consumed by a subclass of Reporter. However, the error position is only part of Diagnostic, not Message.

NOTE: you should not persist a message directly, because most messages take an implicit Context and these contexts weigh in at about 4mb per instance. Therefore, persisting these will result in a memory leak.

Instead use the persist method to create an instance that does not keep a reference to these contexts.

Value Params
errorId

a unique id identifying the message, this will later be used to reference documentation online

Companion
object
class MethodDoesNotTakeParameters(tree: Tree)(using `x$2`: Context) extends TypeMsg
class MissingCompanionForStatic(member: Symbol)(using `x$2`: Context) extends SyntaxMsg
class MissingEmptyArgumentList(method: String)(using `x$2`: Context) extends SyntaxMsg
class MissingIdent(tree: Ident, treeKind: String, val name: Name)(using `x$4`: Context) extends NotFoundMsg
class MissingReturnType(implicit ctx: Context) extends SyntaxMsg
class MissingReturnTypeWithReturnStatement(method: Symbol)(using `x$2`: Context) extends SyntaxMsg
class MissingTypeParameterFor(tpe: Type)(using `x$2`: Context) extends SyntaxMsg
class MissingTypeParameterInTypeApp(tpe: Type)(using `x$2`: Context) extends TypeMsg
class MixedLeftAndRightAssociativeOps(op1: Name, op2: Name, op2LeftAssoc: Boolean)(using `x$4`: Context) extends SyntaxMsg
class ModifierNotAllowedForDefinition(flag: Flag)(using `x$2`: Context) extends SyntaxMsg
abstract class NamingMsg(errorId: ErrorMessageID) extends Message
class NoExplanation(msgFn: => String) extends Message

The fallback Message containing no explanation and having no kind

The fallback Message containing no explanation and having no kind

Companion
object

The extractor for NoExplanation can be used to check whether any error lacks an explanation

The extractor for NoExplanation can be used to check whether any error lacks an explanation

Companion
class
class NoExtensionMethodAllowed(mdef: DefDef)(using `x$2`: Context) extends SyntaxMsg
class NoMatchingOverload(val alternatives: List[SingleDenotation], pt: Type)(using `x$3`: Context) extends TypeMsg
class NoReturnFromInlineable(owner: Symbol)(using `x$2`: Context) extends SyntaxMsg
class NotAMember(site: Type, val name: Name, selected: String, addendum: => String)(using `x$5`: Context) extends NotFoundMsg with ShowMatchTrace
class NotAPath(tp: Type, usage: String)(using `x$3`: Context) extends TypeMsg
class NotAnExtractor(tree: Tree)(using `x$2`: Context) extends SyntaxMsg
abstract class NotFoundMsg(errorId: ErrorMessageID) extends Message

A simple not found message (either for idents, or member selection. Messages of this class are sometimes dropped in favor of other, more specific messages.

A simple not found message (either for idents, or member selection. Messages of this class are sometimes dropped in favor of other, more specific messages.

class ObjectMayNotHaveSelfType(mdef: ModuleDef)(using `x$2`: Context) extends SyntaxMsg
class OnlyClassesCanBeAbstract(sym: Symbol)(implicit ctx: Context) extends SyntaxMsg
class OverloadInRefinement(rsym: Symbol)(using `x$2`: Context) extends DeclarationMsg
class OverloadedOrRecursiveMethodNeedsResultType(cycleSym: Symbol)(using `x$2`: Context) extends CyclicMsg
class OverrideError(val msg: String) extends DeclarationMsg
class OverrideTypeMismatchError(val msg: String, memberTp: Type, otherTp: Type)(using `x$4`: Context) extends DeclarationMsg
class OverridesNothing(member: Symbol)(using `x$2`: Context) extends DeclarationMsg
class OverridesNothingButNameExists(member: Symbol, existing: List[SingleDenotation])(using `x$3`: Context) extends DeclarationMsg
class PackageNameAlreadyDefined(pkg: Symbol)(using `x$2`: Context) extends NamingMsg
class ParameterizedTypeLacksArguments(psym: Symbol)(using `x$2`: Context) extends TypeMsg
class ParamsNoInline(owner: Symbol)(using `x$2`: Context) extends SyntaxMsg
class PatternMatchExhaustivity(uncoveredFn: => String, hasMore: Boolean)(using `x$3`: Context) extends Message
abstract class PatternMatchMsg(errorId: ErrorMessageID) extends Message
class PkgDuplicateSymbol(existing: Symbol)(using `x$2`: Context) extends NamingMsg
class PolymorphicMethodMissingTypeInParent(rsym: Symbol, parentSym: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ProperDefinitionNotFound(using `x$1`: Context) extends Message
class PureExpressionInStatementPosition(stat: Tree, val exprOwner: Symbol)(using `x$3`: Context) extends Message
class ReassignmentToVal(name: Name)(using `x$2`: Context) extends TypeMsg
class RecursiveValueNeedsResultType(cycleSym: Symbol)(using `x$2`: Context) extends CyclicMsg
class RedundantModifier(flag: Flag)(using `x$2`: Context) extends SyntaxMsg
abstract class ReferenceMsg(errorId: ErrorMessageID) extends Message
class RepeatedModifier(modifier: String)(implicit ctx: Context) extends SyntaxMsg
object Reporter
Companion
class
abstract class Reporter extends ReporterResult

This interface provides methods to issue information, warning and error messages.

This interface provides methods to issue information, warning and error messages.

Companion
object
class ReturnOutsideMethodDefinition(owner: Symbol)(using `x$2`: Context) extends SyntaxMsg
class SeqWildcardPatternPos(using `x$1`: Context) extends SyntaxMsg
trait ShowMatchTrace(tps: Type*)(using `x$2`: Context) extends Message
class SkolemInInferred(tree: Tree, pt: Type, argument: Tree)(using `x$4`: Context) extends TypeMsg
class StableIdentPattern(tree: Tree, pt: Type)(using `x$3`: Context) extends TypeMsg
class StaticFieldsOnlyAllowedInObjects(member: Symbol)(using `x$2`: Context) extends SyntaxMsg
class StaticFieldsShouldPrecedeNonStatic(member: Symbol, defns: List[Tree])(using `x$3`: Context) extends SyntaxMsg
class StoreReporter(outer: Reporter) extends Reporter

This class implements a Reporter that stores all messages

This class implements a Reporter that stores all messages

Beware that this reporter can leak memory, and force messages in two scenarios:

  • During debugging config.Printers.typr is set from noPrinter to new Printer, which forces the message
  • The reporter is not flushed and the message containers capture a Context (about 4MB)
class SuperCallsNotAllowedInlineable(symbol: Symbol)(using `x$2`: Context) extends SyntaxMsg
class SuperQualMustBeParent(qual: Ident, cls: ClassSymbol)(using `x$3`: Context) extends ReferenceMsg
class SymbolChangedSemanticsInVersion(symbol: Symbol, migrationVersion: ScalaVersion, migrationMessage: String)(using `x$4`: Context) extends SyntaxMsg
class SymbolHasUnparsableVersionNumber(symbol: Symbol, errorMessage: String)(using `x$3`: Context) extends SyntaxMsg
abstract class SyntaxMsg(errorId: ErrorMessageID) extends Message

The role of messages is to provide the necessary details for a simple to understand diagnostic event. Each message can be turned into a message container (one of the above) by calling the appropriate method on them. For instance:

Messages

The role of messages is to provide the necessary details for a simple to understand diagnostic event. Each message can be turned into a message container (one of the above) by calling the appropriate method on them. For instance:

EmptyCatchBlock(tree).error(pos)   // res: Error
EmptyCatchBlock(tree).warning(pos) // res: Warning
class TailrecNotApplicable(symbol: Symbol)(using `x$2`: Context) extends SyntaxMsg
class TermMemberNeedsResultTypeForImplicitSearch(cycleSym: Symbol)(using `x$2`: Context) extends CyclicMsg

A re-usable Reporter used in Contexts#test

A re-usable Reporter used in Contexts#test

class ThrowingReporter(reportInfo: Reporter) extends Reporter

This class implements a Reporter that throws all errors and sends warnings and other info to the underlying reporter.

This class implements a Reporter that throws all errors and sends warnings and other info to the underlying reporter.

class TopLevelCantBeImplicit(sym: Symbol)(implicit ctx: Context) extends SyntaxMsg
class TopLevelImplicitClass(cdef: TypeDef)(using `x$2`: Context) extends SyntaxMsg

This module is carefully optimized to give zero overhead if Config.tracingEnabled is false. The trace operation is called in various hotspots, so every tiny bit of overhead is unacceptable: boxing, closures, additional method calls are all out.

This module is carefully optimized to give zero overhead if Config.tracingEnabled is false. The trace operation is called in various hotspots, so every tiny bit of overhead is unacceptable: boxing, closures, additional method calls are all out.

class TraitIsExpected(symbol: Symbol)(using `x$2`: Context) extends SyntaxMsg
class TraitMayNotDefineNativeMethod(sym: Symbol)(implicit ctx: Context) extends SyntaxMsg
class TraitRedefinedFinalMethodFromAnyRef(method: Symbol)(using `x$2`: Context) extends SyntaxMsg
class TraitsMayNotBeFinal(sym: Symbol)(implicit ctx: Context) extends SyntaxMsg
class TypeDoesNotTakeParameters(tpe: Type, params: List[Tree[Untyped]])(using `x$3`: Context) extends TypeMsg
class TypeMismatch(found: Type, expected: Type, addenda: => String*)(using `x$4`: Context) extends TypeMismatchMsg
abstract class TypeMismatchMsg(found: Type, expected: Type)(errorId: ErrorMessageID)(using `x$4`: Context) extends Message with ShowMatchTrace
abstract class TypeMsg(errorId: ErrorMessageID) extends Message
class TypeSpliceInValPattern(expr: Tree)(using `x$2`: Context) extends SyntaxMsg
class TypeTestAlwaysSucceeds(scrutTp: Type, testTp: Type)(using `x$3`: Context) extends SyntaxMsg
class TypedCaseDoesNotExplicitlyExtendTypedEnum(enumDef: Symbol, caseDef: TypeDef)(using `x$3`: Context) extends SyntaxMsg
class TypesAndTraitsCantBeImplicit(using `x$1`: Context) extends SyntaxMsg
class UnableToEmitSwitch(using `x$1`: Context) extends SyntaxMsg
class UnableToExtendSealedClass(pclazz: Symbol)(using `x$2`: Context) extends SyntaxMsg
class UnapplyInvalidNumberOfArguments(qual: Tree, argTypes: List[Type])(using `x$3`: Context) extends SyntaxMsg
class UnapplyInvalidReturnType(unapplyResult: Type, unapplyName: Name)(using `x$3`: Context) extends DeclarationMsg
class UnboundPlaceholderParameter(implicit ctx: Context) extends SyntaxMsg
class UnboundWildcardType(using `x$1`: Context) extends SyntaxMsg
class UncheckedTypePattern(msgFn: => String)(using `x$2`: Context) extends PatternMatchMsg
class UndefinedNamedTypeParameter(undefinedName: Name, definedNames: List[Name])(using `x$3`: Context) extends SyntaxMsg
class UnexpectedPatternForSummonFrom(tree: Tree[_])(using `x$2`: Context) extends SyntaxMsg

This trait implements isHidden so that multiple messages per position are suppressed, unless they are of increasing severity.

This trait implements isHidden so that multiple messages per position are suppressed, unless they are of increasing severity.

class UnreducibleApplication(tycon: Type)(using `x$2`: Context) extends TypeMsg
class ValueClassNeedsOneValParam(valueClass: Symbol)(using `x$2`: Context) extends SyntaxMsg
class ValueClassParameterMayNotBeAVar(valueClass: Symbol, param: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ValueClassParameterMayNotBeCallByName(valueClass: Symbol, param: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ValueClassesMayNotBeAbstract(valueClass: Symbol)(using `x$2`: Context) extends SyntaxMsg
class ValueClassesMayNotBeContainted(valueClass: Symbol)(using `x$2`: Context) extends SyntaxMsg
class ValueClassesMayNotContainInitalization(valueClass: Symbol)(using `x$2`: Context) extends SyntaxMsg
class ValueClassesMayNotDefineASecondaryConstructor(valueClass: Symbol, constructor: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ValueClassesMayNotDefineInner(valueClass: Symbol, inner: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ValueClassesMayNotDefineNonParameterField(valueClass: Symbol, field: Symbol)(using `x$3`: Context) extends SyntaxMsg
class ValueClassesMayNotWrapAnotherValueClass(valueClass: Symbol)(using `x$2`: Context) extends SyntaxMsg
class VarArgsParamMustComeLast(using `x$1`: Context) extends SyntaxMsg
class VarValParametersMayNotBeCallByName(name: TermName, mutable: Boolean)(using `x$3`: Context) extends SyntaxMsg
class WrongNumberOfParameters(expected: Int)(using `x$2`: Context) extends SyntaxMsg
class WrongNumberOfTypeArgs(fntpe: Type, expectedArgs: List[ParamInfo], actual: List[Tree])(using `x$4`: Context) extends SyntaxMsg
object trace extends TraceSyntax