Skip to content

Commit 26a5798

Browse files
committed
Refactor Reflection error reporting
1 parent 01fc4a1 commit 26a5798

File tree

18 files changed

+54
-43
lines changed

18 files changed

+54
-43
lines changed

compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2515,17 +2515,19 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext:
25152515
case cu => ""
25162516
end Source
25172517

2518-
def error(msg: => String, pos: Position): Unit =
2519-
dotc.report.error(msg, pos)
2518+
object Reporting extends ReportingModule:
2519+
def error(msg: => String, pos: Position): Unit =
2520+
dotc.report.error(msg, pos)
25202521

2521-
def error(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2522-
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
2522+
def error(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2523+
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
25232524

2524-
def warning(msg: => String, pos: Position): Unit =
2525-
dotc.report.warning(msg, pos)
2525+
def warning(msg: => String, pos: Position): Unit =
2526+
dotc.report.warning(msg, pos)
25262527

2527-
def warning(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2528-
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
2528+
def warning(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2529+
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
2530+
end Reporting
25292531

25302532
type Comment = dotc.core.Comments.Comment
25312533

library/src-bootstrapped/dotty/internal/StringContextMacro.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ object StringContextMacro {
5959
*/
6060
private def interpolate(strCtxExpr: Expr[StringContext], argsExpr: Expr[Seq[Any]])(using qctx: QuoteContext): Expr[String] = {
6161
import qctx.tasty._
62+
import qctx.tasty.Reporting._
63+
6264
val sourceFile = strCtxExpr.unseal.pos.sourceFile
6365

6466
val (partsExpr, parts) = strCtxExpr match {

library/src-bootstrapped/scala/quoted/report.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ object report:
44

55
/** Report an error at the position of the macro expansion */
66
def error(msg: => String)(using qctx: QuoteContext): Unit =
7-
qctx.tasty.error(msg, qctx.tasty.rootPosition)
7+
qctx.tasty.Reporting.error(msg, qctx.tasty.rootPosition)
88

99
/** Report an error at the on the position of `expr` */
1010
def error(msg: => String, expr: Expr[Any])(using qctx: QuoteContext): Unit =
11-
qctx.tasty.error(msg, expr.unseal.pos)
11+
qctx.tasty.Reporting.error(msg, expr.unseal.pos)
1212

1313
/** Report an error at the position of the macro expansion and throws a StopQuotedContext */
1414
def throwError(msg: => String)(using qctx: QuoteContext): Nothing = {
@@ -23,11 +23,11 @@ object report:
2323

2424
/** Report a warning */
2525
def warning(msg: => String)(using qctx: QuoteContext): Unit =
26-
qctx.tasty.warning(msg, qctx.tasty.rootPosition)
26+
qctx.tasty.Reporting.warning(msg, qctx.tasty.rootPosition)
2727

2828
/** Report a warning at the on the position of `expr` */
2929
def warning(msg: => String, expr: Expr[_])(using qctx: QuoteContext): Unit =
30-
qctx.tasty.warning(msg, expr.unseal.pos)
30+
qctx.tasty.Reporting.warning(msg, expr.unseal.pos)
3131

3232
/** Throwable used to stop the expansion of a macro after an error was reported */
3333
class StopQuotedContext extends Throwable

library/src/scala/tasty/Reflection.scala

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3148,19 +3148,26 @@ trait Reflection { reflection =>
31483148
// REPORTING //
31493149
///////////////
31503150

3151-
// TODO: these should not be top level
3151+
val Reporting: ReportingModule
31523152

3153-
/** Emits an error message */
3154-
def error(msg: => String, pos: Position): Unit
3153+
/** Module containg error and waring reporiting.
3154+
*
3155+
* Also see scala.quoted.report
3156+
*/
3157+
trait ReportingModule { self: Reporting.type =>
3158+
/** Emits an error message */
3159+
def error(msg: => String, pos: Position): Unit
31553160

3156-
/** Emits an error at a specific range of a file */
3157-
def error(msg: => String, source: SourceFile, start: Int, end: Int): Unit
3161+
/** Emits an error at a specific range of a file */
3162+
def error(msg: => String, source: SourceFile, start: Int, end: Int): Unit
31583163

3159-
/** Emits an error message */
3160-
def warning(msg: => String, pos: Position): Unit
3164+
/** Emits an error message */
3165+
def warning(msg: => String, pos: Position): Unit
3166+
3167+
/** Emits a warning at a specific range of a file */
3168+
def warning(msg: => String, source: SourceFile, start: Int, end: Int): Unit
3169+
}
31613170

3162-
/** Emits a warning at a specific range of a file */
3163-
def warning(msg: => String, source: SourceFile, start: Int, end: Int): Unit
31643171

31653172
//////////////
31663173
// COMMENTS //

tests/neg-macros/delegate-match-1/Macro_1.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ private def fImpl(using qctx: QuoteContext): Expr[Unit] = {
99
case x: ImplicitSearchSuccess =>
1010
'{}
1111
case x: DivergingImplicit => '{}
12-
error("DivergingImplicit\n" + x.explanation, rootPosition)
12+
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
1313
'{}
1414
case x: NoMatchingImplicits =>
15-
error("NoMatchingImplicits\n" + x.explanation, rootPosition)
15+
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
1616
'{}
1717
case x: AmbiguousImplicits =>
18-
error("AmbiguousImplicits\n" + x.explanation, rootPosition)
18+
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
1919
'{}
2020
}
2121
}

tests/neg-macros/delegate-match-2/Macro_1.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ private def fImpl (using qctx: QuoteContext) : Expr[Unit] = {
99
case x: ImplicitSearchSuccess =>
1010
'{}
1111
case x: DivergingImplicit => '{}
12-
error("DivergingImplicit\n" + x.explanation, rootPosition)
12+
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
1313
'{}
1414
case x: NoMatchingImplicits =>
15-
error("NoMatchingImplicits\n" + x.explanation, rootPosition)
15+
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
1616
'{}
1717
case x: AmbiguousImplicits =>
18-
error("AmbiguousImplicits\n" + x.explanation, rootPosition)
18+
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
1919
'{}
2020
}
2121
}

tests/neg-macros/delegate-match-3/Macro_1.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ private def fImpl(using qctx: QuoteContext) : Expr[Unit] = {
99
case x: ImplicitSearchSuccess =>
1010
'{}
1111
case x: DivergingImplicit => '{}
12-
error("DivergingImplicit\n" + x.explanation, rootPosition)
12+
Reporting.error("DivergingImplicit\n" + x.explanation, rootPosition)
1313
'{}
1414
case x: NoMatchingImplicits =>
15-
error("NoMatchingImplicits\n" + x.explanation, rootPosition)
15+
Reporting.error("NoMatchingImplicits\n" + x.explanation, rootPosition)
1616
'{}
1717
case x: AmbiguousImplicits =>
18-
error("AmbiguousImplicits\n" + x.explanation, rootPosition)
18+
Reporting.error("AmbiguousImplicits\n" + x.explanation, rootPosition)
1919
'{}
2020
}
2121
}

tests/neg-macros/i6432/Macro_1.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object Macro {
1010
sc match {
1111
case '{ StringContext(${Varargs(parts)}: _*) } =>
1212
for (part @ Const(s) <- parts)
13-
error(s, part.unseal.pos)
13+
Reporting.error(s, part.unseal.pos)
1414
}
1515
'{}
1616
}

tests/neg-macros/i6432b/Macro_1.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object Macro {
1010
sc match {
1111
case '{ StringContext(${Varargs(parts)}: _*) } =>
1212
for (part @ Const(s) <- parts)
13-
error(s, part.unseal.pos)
13+
Reporting.error(s, part.unseal.pos)
1414
}
1515
'{}
1616
}

tests/neg-macros/i9801/Macro_1.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ def impl(prog: Expr[Double])(using QuoteContext) : Expr[Double] =
1515
triggerStackOverflow(0)
1616
} catch {
1717
case e =>
18-
qctx.tasty.error(e.getMessage, prog.unseal.pos)
18+
qctx.tasty.Reporting.error(e.getMessage, prog.unseal.pos)
1919
'{ 42.0 }
2020
}

0 commit comments

Comments
 (0)