From ed10ef0208f794060b5351cc601a915177e0a1c5 Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Fri, 31 Mar 2017 11:50:07 +0200 Subject: Fix deadlock in `runAll` --- .../dotty/tools/dotc/reporting/TestReporter.scala | 51 ++++++++-------------- 1 file changed, 19 insertions(+), 32 deletions(-) (limited to 'compiler/test/dotty/tools/dotc/reporting') diff --git a/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala b/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala index 2d7e6c70a..5641240a7 100644 --- a/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala +++ b/compiler/test/dotty/tools/dotc/reporting/TestReporter.scala @@ -2,7 +2,7 @@ package dotty.tools package dotc package reporting -import java.io.{ PrintWriter, File => JFile, FileOutputStream } +import java.io.{ PrintStream, PrintWriter, File => JFile, FileOutputStream } import java.text.SimpleDateFormat import java.util.Date @@ -93,38 +93,25 @@ object TestReporter { logWriter.flush() } - def parallelReporter(lock: AnyRef, logLevel: Int): TestReporter = new TestReporter( - new PrintWriter(Console.err, true), - str => lock.synchronized { - logWriter.println(str) - logWriter.flush() - }, - logLevel - ) - - def reporter(logLevel: Int): TestReporter = new TestReporter( - new PrintWriter(Console.err, true), - writeToLog, - logLevel - ) - - def simplifiedReporter(writer: PrintWriter): TestReporter = new TestReporter( - writer, - writeToLog, - WARNING - ) { - /** Prints the message with the given position indication in a simplified manner */ - override def printMessageAndPos(m: MessageContainer, extra: String)(implicit ctx: Context): Unit = { - val msg = s"${m.pos.line + 1}: " + m.contained.kind + extra - val extraInfo = inlineInfo(m.pos) - - writer.println(msg) - _messageBuf.append(msg) - - if (extraInfo.nonEmpty) { - writer.println(extraInfo) - _messageBuf.append(extraInfo) + def reporter(ps: PrintStream, logLevel: Int): TestReporter = + new TestReporter(new PrintWriter(ps, true), writeToLog, logLevel) + + def simplifiedReporter(writer: PrintWriter): TestReporter = { + val rep = new TestReporter(writer, writeToLog, WARNING) { + /** Prints the message with the given position indication in a simplified manner */ + override def printMessageAndPos(m: MessageContainer, extra: String)(implicit ctx: Context): Unit = { + val msg = s"${m.pos.line + 1}: " + m.contained.kind + extra + val extraInfo = inlineInfo(m.pos) + + writer.println(msg) + _messageBuf.append(msg) + + if (extraInfo.nonEmpty) { + writer.println(extraInfo) + _messageBuf.append(extraInfo) + } } } + rep } } -- cgit v1.2.3