@@ -34,7 +34,9 @@ object Message:
34
34
var nonSensical = false
35
35
private var recordOK = disambiguate
36
36
37
- def stopRecording () =
37
+ /** Clear all entries and stop further entries to be added */
38
+ def disable () =
39
+ clear()
38
40
recordOK = false
39
41
40
42
def record (str : String , isType : Boolean , entry : Recorded )(using Context ): String = {
@@ -240,10 +242,10 @@ abstract class Message(val errorId: ErrorMessageID)(using Context) { self =>
240
242
case msgPrinter : Message .Printer =>
241
243
myIsNonSensical = msgPrinter.seen.nonSensical
242
244
val addendum = explanations(msgPrinter.seen)
243
- msgPrinter.seen.clear ()
244
- msgPrinter.seen.stopRecording()
245
- if addendum.isEmpty || ! disambiguate then " "
246
- else " \n\n " ++ addendum
245
+ msgPrinter.seen.disable ()
246
+ // Clear entries and stop futher recording so that messages containing the current
247
+ // one don't repeat the explanations or use explanations from the msgPostscript.
248
+ if addendum.isEmpty then " " else " \n\n " ++ addendum
247
249
case _ =>
248
250
" "
249
251
@@ -254,7 +256,7 @@ abstract class Message(val errorId: ErrorMessageID)(using Context) { self =>
254
256
*/
255
257
def canExplain : Boolean = explain.nonEmpty
256
258
257
- var myIsNonSensical : Boolean = false
259
+ private var myIsNonSensical : Boolean = false
258
260
259
261
/** A message is non-sensical if it contains references to internally
260
262
* generated error types. Normally we want to suppress error messages
@@ -272,14 +274,14 @@ abstract class Message(val errorId: ErrorMessageID)(using Context) { self =>
272
274
private def inMessageContext (disambiguate : Boolean )(op : Context ?=> String ): String =
273
275
if ctx eq NoContext then op
274
276
else
275
- val ( msgContext, msgPrinter : Message . Printer ) = ctx.printer match
276
- case printer : Message .Printer => ( ctx, printer)
277
+ val msgContext = ctx.printer match
278
+ case _ : Message .Printer => ctx
277
279
case _ =>
278
280
val seen = Seen (disambiguate)
279
281
val ctx1 = ctx.fresh.setPrinterFn(Message .Printer (seen, _))
280
282
if ! ctx1.property(MessageLimiter ).isDefined then
281
283
ctx1.setProperty(MessageLimiter , ErrorMessageLimiter ())
282
- ( ctx1, ctx1.printer. asInstanceOf [ Message . Printer ])
284
+ ctx1
283
285
op(using msgContext)
284
286
285
287
/** The message to report. <nonsensical> tags are filtered out */
0 commit comments