@@ -398,29 +398,25 @@ object Semantic {
398398
399399 /** Error reporting */
400400 trait Reporter :
401- def errors : List [Error ]
402401 def report (err : Error ): Unit
403402
404403 object Reporter :
405- class BufferReporter extends Reporter :
406- val buf = new mutable.ArrayBuffer [Error ]
404+ class BufferedReporter extends Reporter :
405+ private val buf = new mutable.ArrayBuffer [Error ]
407406 def errors = buf.toList
408407 def report (err : Error ) = buf += err
409408
410409 class ErrorFound (val error : Error ) extends Exception
411410 class StopEarlyReporter extends Reporter :
412411 def report (err : Error ) = throw new ErrorFound (err)
413- def errors = ???
414-
415- def fresh (): Reporter = new BufferReporter
416412
417413 /** Capture all errors and return as a list */
418414 def errorsIn (fn : Reporter ?=> Unit ): List [Error ] =
419- val reporter = Reporter .fresh()
415+ val reporter = new BufferedReporter
420416 fn(using reporter)
421417 reporter.errors.toList
422418
423- /** Stop on first found error */
419+ /** Stop on first error */
424420 def stopEarly (fn : Reporter ?=> Unit ): List [Error ] =
425421 val reporter : Reporter = new StopEarlyReporter
426422
@@ -793,10 +789,9 @@ object Semantic {
793789 case Hot =>
794790 val buffer = new mutable.ArrayBuffer [Error ]
795791 val args2 = args.map { arg =>
796- given reporter : Reporter = Reporter .fresh()
797- arg.promote
798- buffer ++= reporter.errors
799- if reporter.errors.isEmpty then Hot
792+ val errors = Reporter .errorsIn { arg.promote }
793+ buffer ++= errors
794+ if errors.isEmpty then Hot
800795 else arg.value.widenArg
801796 }
802797
@@ -1053,7 +1048,7 @@ object Semantic {
10531048 given Promoted = Promoted .empty
10541049 given Trace = Trace .empty
10551050 given Env = Env (paramValues)
1056- given Reporter = Reporter .fresh()
1051+ given reporter : Reporter . BufferedReporter = new Reporter .BufferedReporter
10571052
10581053 thisRef.ensureFresh()
10591054 log(" checking " + task) { eval(tpl, thisRef, thisRef.klass) }
0 commit comments