@@ -13,9 +13,10 @@ import java.nio.charset.{Charset, CharsetDecoder, IllegalCharsetNameException, U
13
13
14
14
import scala .collection .{immutable , mutable }
15
15
import io .{AbstractFile , Path , SourceReader }
16
- import reporters .Reporter
17
16
import util .{ClassPath , returning }
17
+ import reporters .{Reporter => LegacyReporter }
18
18
import scala .reflect .ClassTag
19
+ import scala .reflect .internal .{Reporter => InternalReporter }
19
20
import scala .reflect .internal .util .{BatchSourceFile , FreshNameCreator , NoSourceFile , ScalaClassLoader , ScriptSourceFile , SourceFile , StatisticsStatics }
20
21
import scala .reflect .internal .pickling .PickleBuffer
21
22
import symtab .{Flags , SymbolTable , SymbolTrackers }
@@ -34,7 +35,7 @@ import scala.tools.nsc.ast.{TreeGen => AstTreeGen}
34
35
import scala .tools .nsc .classpath ._
35
36
import scala .tools .nsc .profile .Profiler
36
37
37
- class Global (var currentSettings : Settings , reporter0 : Reporter )
38
+ class Global (var currentSettings : Settings , reporter0 : LegacyReporter )
38
39
extends SymbolTable
39
40
with CompilationUnits
40
41
with Plugins
@@ -76,21 +77,16 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
76
77
77
78
override def settings = currentSettings
78
79
79
- private [this ] var currentReporter : Reporter = { reporter = reporter0 ; currentReporter }
80
+ private [this ] var currentReporter : LegacyReporter = { reporter = reporter0 ; currentReporter }
80
81
81
- def reporter : Reporter = currentReporter
82
- def reporter_= (newReporter : Reporter ): Unit =
83
- currentReporter = newReporter match {
84
- case _ : reporters.ConsoleReporter | _ : reporters.LimitingReporter => newReporter
85
- case _ if settings.maxerrs.isSetByUser && settings.maxerrs.value < settings.maxerrs.default =>
86
- new reporters.LimitingReporter (settings, newReporter)
87
- case _ => newReporter
88
- }
82
+ def reporter : LegacyReporter = currentReporter
83
+ // enforce maxerrs if necessary
84
+ def reporter_= (newReporter : LegacyReporter ): Unit = currentReporter = LegacyReporter .limitedReporter(settings, newReporter)
89
85
90
86
/** Switch to turn on detailed type logs */
91
87
var printTypings = settings.Ytyperdebug .value
92
88
93
- def this (reporter : Reporter ) =
89
+ def this (reporter : LegacyReporter ) =
94
90
this (new Settings (err => reporter.error(null , err)), reporter)
95
91
96
92
def this (settings : Settings ) =
@@ -338,7 +334,7 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
338
334
}
339
335
340
336
def loadReader (name : String ): Option [SourceReader ] = {
341
- def ccon = Class .forName(name).getConstructor(classOf [CharsetDecoder ], classOf [Reporter ])
337
+ def ccon = Class .forName(name).getConstructor(classOf [CharsetDecoder ], classOf [InternalReporter ])
342
338
343
339
try Some (ccon.newInstance(charset.newDecoder(), reporter).asInstanceOf [SourceReader ])
344
340
catch { case ex : Throwable =>
@@ -395,9 +391,10 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
395
391
396
392
/** Is current phase cancelled on this unit? */
397
393
def cancelled (unit : CompilationUnit ) = {
394
+ val isCanceled = reporter.cancelled
398
395
// run the typer only if in `createJavadoc` mode
399
396
val maxJavaPhase = if (createJavadoc) currentRun.typerPhase.id else currentRun.namerPhase.id
400
- reporter.cancelled || unit.isJava && this .id > maxJavaPhase
397
+ isCanceled || unit.isJava && this .id > maxJavaPhase
401
398
}
402
399
403
400
final def withCurrentUnit (unit : CompilationUnit )(task : => Unit ): Unit = {
@@ -1266,7 +1263,7 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
1266
1263
}
1267
1264
1268
1265
// for sbt
1269
- def cancel (): Unit = { reporter.cancelled = true }
1266
+ def cancel (): Unit = reporter.cancelled = true
1270
1267
1271
1268
private def currentProgress = (phasec * size) + unitc
1272
1269
private def totalProgress = (phaseDescriptors.size - 1 ) * size // -1: drops terminal phase
@@ -1656,14 +1653,16 @@ class Global(var currentSettings: Settings, reporter0: Reporter)
1656
1653
}
1657
1654
1658
1655
object Global {
1659
- def apply (settings : Settings , reporter : Reporter ): Global = new Global (settings, reporter)
1656
+ def apply (settings : Settings , reporter : LegacyReporter ): Global = new Global (settings, reporter)
1660
1657
1661
1658
def apply (settings : Settings ): Global = new Global (settings, reporter(settings))
1662
1659
1663
- private def reporter (settings : Settings ): Reporter = {
1660
+ private def reporter (settings : Settings ): LegacyReporter = {
1664
1661
// val loader = ScalaClassLoader(getClass.getClassLoader) // apply does not make delegate
1665
1662
val loader = new ClassLoader (getClass.getClassLoader) with ScalaClassLoader
1666
- loader.create[Reporter ](settings.reporter.value, settings.errorFn)(settings)
1663
+ val res = loader.create[InternalReporter ](settings.reporter.value, settings.errorFn)(settings)
1664
+ if (res.isInstanceOf [LegacyReporter ]) res.asInstanceOf [LegacyReporter ]
1665
+ else res : LegacyReporter // adaptable
1667
1666
}
1668
1667
private object InitPhase extends Phase (null ) {
1669
1668
def name = " <init phase>"
0 commit comments