@@ -5,15 +5,18 @@ package reporting
55import core .Contexts .*
66import java .io .{ BufferedReader , PrintWriter }
77import Diagnostic .*
8+ import dotty .tools .dotc .interfaces .Diagnostic .INFO
89
910/**
1011 * This class implements a Reporter that displays messages on a text console
1112 */
1213class ConsoleReporter (
1314 reader : BufferedReader = Console .in,
14- writer : PrintWriter = new PrintWriter (Console .err, true )
15+ writer : PrintWriter = new PrintWriter (Console .err, true ),
16+ echoer : PrintWriter = new PrintWriter (Console .out, true )
1517) extends ConsoleReporter .AbstractConsoleReporter {
16- override def printMessage (msg : String ): Unit = { writer.print(msg + " \n " ); writer.flush() }
18+ override def printMessage (msg : String ): Unit = { writer.println(msg); writer.flush() }
19+ override def echoMessage (msg : String ): Unit = { echoer.println(msg); echoer.flush() }
1720 override def flush ()(using Context ): Unit = writer.flush()
1821
1922 override def doReport (dia : Diagnostic )(using Context ): Unit = {
@@ -22,18 +25,21 @@ class ConsoleReporter(
2225 dia match
2326 case _ : Error => Reporter .displayPrompt(reader, writer)
2427 case _ : Warning if ctx.settings.XfatalWarnings .value => Reporter .displayPrompt(reader, writer)
25- case _ =>
28+ case _ =>
2629 }
2730}
2831
2932object ConsoleReporter {
3033 abstract class AbstractConsoleReporter extends AbstractReporter {
31- /** Prints the message. */
34+ /** Print the diagnostic message. */
3235 def printMessage (msg : String ): Unit
3336
34- /** Prints the message with the given position indication. */
35- def doReport (dia : Diagnostic )(using Context ): Unit = {
36- printMessage(messageAndPos(dia))
37- }
37+ /** Print the informative message. */
38+ def echoMessage (msg : String ): Unit
39+
40+ /** Print the message with the given position indication. */
41+ def doReport (dia : Diagnostic )(using Context ): Unit =
42+ if dia.level == INFO then echoMessage(messageAndPos(dia))
43+ else printMessage(messageAndPos(dia))
3844 }
3945}
0 commit comments