@@ -108,6 +108,9 @@ end CyclicMsg
108108abstract class ReferenceMsg (errorId : ErrorMessageID )(using Context ) extends Message (errorId):
109109 def kind = MessageKind .Reference
110110
111+ abstract class StagingMessage (errorId : ErrorMessageID )(using Context ) extends Message (errorId):
112+ override final def kind = MessageKind .Staging
113+
111114abstract class EmptyCatchOrFinallyBlock (tryBody : untpd.Tree , errNo : ErrorMessageID )(using Context )
112115extends SyntaxMsg (errNo) {
113116 def explain (using Context ) = {
@@ -3323,3 +3326,20 @@ class NonNamedArgumentInJavaAnnotation(using Context) extends SyntaxMsg(NonNamed
33233326 """
33243327
33253328end NonNamedArgumentInJavaAnnotation
3329+
3330+ final class QuotedTypeMissing (tpe : Type )(using Context ) extends StagingMessage (QuotedTypeMissingID ):
3331+
3332+ private def witness = defn.QuotedTypeClass .typeRef.appliedTo(tpe)
3333+
3334+ override protected def msg (using Context ): String =
3335+ i " Reference to $tpe within quotes requires a given ${witness} in scope "
3336+
3337+ override protected def explain (using Context ): String =
3338+ i """ Referencing ` $tpe` inside a quoted expression requires a ` ${witness}` to be in scope.
3339+ |Since Scala is subject to erasure at runtime, the type information will be missing during the execution of the code.
3340+ |` ${witness}` is therefore needed to carry ` $tpe`'s type information into the quoted code.
3341+ |Without an implicit ` ${witness}`, the type ` $tpe` cannot be properly referenced within the expression.
3342+ |To resolve this, ensure that a ` ${witness}` is available, either through a context-bound or explicitly.
3343+ | """
3344+
3345+ end QuotedTypeMissing
0 commit comments