@@ -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