Skip to content

Commit 38ba6e1

Browse files
Merge pull request #9864 from dotty-staging/refactor-reflection-reporting
Refactor Reflection reporting
2 parents a164668 + 5315f08 commit 38ba6e1

File tree

19 files changed

+54
-45
lines changed

19 files changed

+54
-45
lines changed

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

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

2577-
def error(msg: => String, pos: Position): Unit =
2578-
dotc.report.error(msg, pos)
2577+
object Reporting extends ReportingModule:
2578+
def error(msg: => String, pos: Position): Unit =
2579+
dotc.report.error(msg, pos)
25792580

2580-
def error(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2581-
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
2581+
def error(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2582+
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
25822583

2583-
def warning(msg: => String, pos: Position): Unit =
2584-
dotc.report.warning(msg, pos)
2584+
def warning(msg: => String, pos: Position): Unit =
2585+
dotc.report.warning(msg, pos)
25852586

2586-
def warning(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2587-
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
2587+
def warning(msg: => String, sourceFile: SourceFile, start: Int, end: Int): Unit =
2588+
dotc.report.error(msg, dotc.util.SourcePosition(sourceFile, dotc.util.Spans.Span(start, end)))
2589+
end Reporting
25882590

25892591
type Documentation = dotc.core.Comments.Comment
25902592

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
@@ -3238,19 +3238,26 @@ trait Reflection { reflection =>
32383238
// REPORTING //
32393239
///////////////
32403240

3241-
// TODO: these should not be top level
3241+
val Reporting: ReportingModule
32423242

3243-
/** Emits an error message */
3244-
def error(msg: => String, pos: Position): Unit
3243+
/** Module containg error and waring reporiting.
3244+
*
3245+
* Also see scala.quoted.report
3246+
*/
3247+
trait ReportingModule { self: Reporting.type =>
3248+
/** Emits an error message */
3249+
def error(msg: => String, pos: Position): Unit
32453250

3246-
/** Emits an error at a specific range of a file */
3247-
def error(msg: => String, source: SourceFile, start: Int, end: Int): Unit
3251+
/** Emits an error at a specific range of a file */
3252+
def error(msg: => String, source: SourceFile, start: Int, end: Int): Unit
32483253

3249-
/** Emits an error message */
3250-
def warning(msg: => String, pos: Position): Unit
3254+
/** Emits an error message */
3255+
def warning(msg: => String, pos: Position): Unit
3256+
3257+
/** Emits a warning at a specific range of a file */
3258+
def warning(msg: => String, source: SourceFile, start: Int, end: Int): Unit
3259+
}
32513260

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

32553262
///////////////////
32563263
// DOCUMENTATION //

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
}

0 commit comments

Comments
 (0)