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