Skip to content

Commit 41eff34

Browse files
committed
runQuietly - like run, but without output
1 parent bf808b3 commit 41eff34

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

compiler/src/dotty/tools/repl/ReplDriver.scala

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ class ReplDriver(settings: Array[String],
176176
interpret(ParseResult.complete(input))
177177
}
178178

179+
final def runQuietly(input: String)(using State): State = runBody {
180+
val parsed = ParseResult(input)
181+
interpret(parsed, quiet = true)
182+
}
183+
179184
private def runBody(body: => State): State = rendering.classLoader()(using rootCtx).asContext(withRedirectedOutput(body))
180185

181186
// TODO: i5069
@@ -242,10 +247,10 @@ class ReplDriver(settings: Array[String],
242247
.getOrElse(Nil)
243248
end completions
244249

245-
private def interpret(res: ParseResult)(using state: State): State = {
250+
private def interpret(res: ParseResult, quiet: Boolean = false)(using state: State): State = {
246251
res match {
247252
case parsed: Parsed if parsed.trees.nonEmpty =>
248-
compile(parsed, state)
253+
compile(parsed, state, quiet)
249254

250255
case SyntaxErrors(_, errs, _) =>
251256
displayErrors(errs)
@@ -263,7 +268,7 @@ class ReplDriver(settings: Array[String],
263268
}
264269

265270
/** Compile `parsed` trees and evolve `state` in accordance */
266-
private def compile(parsed: Parsed, istate: State): State = {
271+
private def compile(parsed: Parsed, istate: State, quiet: Boolean = false): State = {
267272
def extractNewestWrapper(tree: untpd.Tree): Name = tree match {
268273
case PackageDef(_, (obj: untpd.ModuleDef) :: Nil) => obj.name.moduleClassName
269274
case _ => nme.NO_NAME
@@ -314,9 +319,11 @@ class ReplDriver(settings: Array[String],
314319
given Ordering[Diagnostic] =
315320
Ordering[(Int, Int, Int)].on(d => (d.pos.line, -d.level, d.pos.column))
316321

317-
(definitions ++ warnings)
318-
.sorted
319-
.foreach(printDiagnostic)
322+
if (!quiet) {
323+
(definitions ++ warnings)
324+
.sorted
325+
.foreach(printDiagnostic)
326+
}
320327

321328
updatedState
322329
}

0 commit comments

Comments
 (0)