@@ -60,12 +60,14 @@ import scala.util.Using
60
60
* @param valIndex the index of next value binding for free expressions
61
61
* @param imports a map from object index to the list of user defined imports
62
62
* @param invalidObjectIndexes the set of object indexes that failed to initialize
63
+ * @param quiet whether we print evaluation results
63
64
* @param context the latest compiler context
64
65
*/
65
66
case class State (objectIndex : Int ,
66
67
valIndex : Int ,
67
68
imports : Map [Int , List [tpd.Import ]],
68
69
invalidObjectIndexes : Set [Int ],
70
+ quiet : Boolean ,
69
71
context : Context ):
70
72
def validObjectIndexes = (1 to objectIndex).filterNot(invalidObjectIndexes.contains(_))
71
73
@@ -114,7 +116,7 @@ class ReplDriver(settings: Array[String],
114
116
}
115
117
116
118
/** the initial, empty state of the REPL session */
117
- final def initialState : State = State (0 , 0 , Map .empty, Set .empty, rootCtx)
119
+ final def initialState : State = State (0 , 0 , Map .empty, Set .empty, false , rootCtx)
118
120
119
121
/** Reset state of repl to the initial state
120
122
*
@@ -217,11 +219,6 @@ class ReplDriver(settings: Array[String],
217
219
interpret(ParseResult .complete(input))
218
220
}
219
221
220
- final def runQuietly (input : String )(using State ): State = runBody {
221
- val parsed = ParseResult (input)
222
- interpret(parsed, quiet = true )
223
- }
224
-
225
222
protected def runBody (body : => State ): State = rendering.classLoader()(using rootCtx).asContext(withRedirectedOutput(body))
226
223
227
224
// TODO: i5069
@@ -290,10 +287,10 @@ class ReplDriver(settings: Array[String],
290
287
.getOrElse(Nil )
291
288
end completions
292
289
293
- protected def interpret (res : ParseResult , quiet : Boolean = false )(using state : State ): State = {
290
+ protected def interpret (res : ParseResult )(using state : State ): State = {
294
291
res match {
295
292
case parsed : Parsed if parsed.trees.nonEmpty =>
296
- compile(parsed, state, quiet )
293
+ compile(parsed, state)
297
294
298
295
case SyntaxErrors (_, errs, _) =>
299
296
displayErrors(errs)
@@ -311,7 +308,7 @@ class ReplDriver(settings: Array[String],
311
308
}
312
309
313
310
/** Compile `parsed` trees and evolve `state` in accordance */
314
- private def compile (parsed : Parsed , istate : State , quiet : Boolean = false ): State = {
311
+ private def compile (parsed : Parsed , istate : State ): State = {
315
312
def extractNewestWrapper (tree : untpd.Tree ): Name = tree match {
316
313
case PackageDef (_, (obj : untpd.ModuleDef ) :: Nil ) => obj.name.moduleClassName
317
314
case _ => nme.NO_NAME
@@ -362,11 +359,9 @@ class ReplDriver(settings: Array[String],
362
359
given Ordering [Diagnostic ] =
363
360
Ordering [(Int , Int , Int )].on(d => (d.pos.line, - d.level, d.pos.column))
364
361
365
- if (! quiet) {
366
- (definitions ++ warnings)
367
- .sorted
368
- .foreach(printDiagnostic)
369
- }
362
+ (if istate.quiet then warnings else definitions ++ warnings)
363
+ .sorted
364
+ .foreach(printDiagnostic)
370
365
371
366
updatedState
372
367
}
@@ -542,6 +537,8 @@ class ReplDriver(settings: Array[String],
542
537
rootCtx = setupRootCtx(tokenize(arg).toArray, rootCtx)
543
538
state.copy(context = rootCtx)
544
539
540
+ case Silent => state.copy(quiet = ! state.quiet)
541
+
545
542
case Quit =>
546
543
// end of the world!
547
544
state
0 commit comments