summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/Global.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/Global.scala')
-rw-r--r--src/compiler/scala/tools/nsc/Global.scala107
1 files changed, 54 insertions, 53 deletions
diff --git a/src/compiler/scala/tools/nsc/Global.scala b/src/compiler/scala/tools/nsc/Global.scala
index 8802c3ec80..13bec828ca 100644
--- a/src/compiler/scala/tools/nsc/Global.scala
+++ b/src/compiler/scala/tools/nsc/Global.scala
@@ -70,7 +70,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
def this(settings: Settings) =
this(settings, new ConsoleReporter(settings))
- // def mkAttributedQualifier(tpe: Type, termSym: Symbol): Tree = gen.mkAttributedQualifier(tpe, termSym)
+ def mkAttributedQualifier(tpe: Type, termSym: Symbol): Tree = gen.mkAttributedQualifier(tpe, termSym)
def picklerPhase: Phase = if (currentRun.isDefined) currentRun.picklerPhase else NoPhase
@@ -265,14 +265,14 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
def informComplete(msg: String): Unit = reporter.withoutTruncating(inform(msg))
def informProgress(msg: String) = if (settings.verbose.value) inform("[" + msg + "]")
- // def inform[T](msg: String, value: T): T = returning(value)(x => inform(msg + x))
+ def inform[T](msg: String, value: T): T = returning(value)(x => inform(msg + x))
def informTime(msg: String, start: Long) = informProgress(elapsedMessage(msg, start))
def logError(msg: String, t: Throwable): Unit = ()
- // def logAfterEveryPhase[T](msg: String)(op: => T) {
- // log("Running operation '%s' after every phase.\n".format(msg) + describeAfterEveryPhase(op))
- // }
+ def logAfterEveryPhase[T](msg: String)(op: => T) {
+ log("Running operation '%s' after every phase.\n".format(msg) + describeAfterEveryPhase(op))
+ }
override def shouldLogAtThisPhase = settings.log.isSetByUser && (
(settings.log containsPhase globalPhase) || (settings.log containsPhase phase)
@@ -419,8 +419,8 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
}
/** Switch to turn on detailed type logs */
- val printTypings = settings.Ytyperdebug.value
- val printInfers = settings.Yinferdebug.value
+ var printTypings = settings.Ytyperdebug.value
+ var printInfers = settings.Yinferdebug.value
// phaseName = "parser"
object syntaxAnalyzer extends {
@@ -639,11 +639,11 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
}
// phaseName = "SAMPLE PHASE"
- // object sampleTransform extends {
- // val global: Global.this.type = Global.this
- // val runsAfter = List[String]()
- // val runsRightAfter = None
- // } with SampleTransform
+ object sampleTransform extends {
+ val global: Global.this.type = Global.this
+ val runsAfter = List[String]()
+ val runsRightAfter = None
+ } with SampleTransform
/** The checkers are for validating the compiler data structures
* at phase boundaries.
@@ -778,7 +778,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
/** Returns List of (phase, value) pairs, including only those
* where the value compares unequal to the previous phase's value.
*/
- def afterEachPhase[T](op: => T): List[(Phase, T)] = { // used in tests
+ def afterEachPhase[T](op: => T): List[(Phase, T)] = {
phaseDescriptors.map(_.ownPhase).filterNot(_ eq NoPhase).foldLeft(List[(Phase, T)]()) { (res, ph) =>
val value = exitingPhase(ph)(op)
if (res.nonEmpty && res.head._2 == value) res
@@ -790,17 +790,17 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
* phase transitions where the result of the operation gave a different
* list than it had when run during the previous phase.
*/
- // def changesAfterEachPhase[T](op: => List[T]): List[ChangeAfterPhase[T]] = {
- // val ops = ((NoPhase, Nil)) :: afterEachPhase(op)
-
- // ops sliding 2 map {
- // case (_, before) :: (ph, after) :: Nil =>
- // val lost = before filterNot (after contains _)
- // val gained = after filterNot (before contains _)
- // ChangeAfterPhase(ph, lost, gained)
- // case _ => ???
- // } toList
- // }
+ def changesAfterEachPhase[T](op: => List[T]): List[ChangeAfterPhase[T]] = {
+ val ops = ((NoPhase, Nil)) :: afterEachPhase(op)
+
+ ops sliding 2 map {
+ case (_, before) :: (ph, after) :: Nil =>
+ val lost = before filterNot (after contains _)
+ val gained = after filterNot (before contains _)
+ ChangeAfterPhase(ph, lost, gained)
+ case _ => ???
+ } toList
+ }
private def numberedPhase(ph: Phase) = "%2d/%s".format(ph.id, ph.name)
case class ChangeAfterPhase[+T](ph: Phase, lost: List[T], gained: List[T]) {
@@ -811,14 +811,14 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
override def toString = mkStr("Lost", lost) + mkStr("Gained", gained)
}
- // def describeAfterEachPhase[T](op: => T): List[String] =
- // afterEachPhase(op) map { case (ph, t) => "[after %-15s] %s".format(numberedPhase(ph), t) }
+ def describeAfterEachPhase[T](op: => T): List[String] =
+ afterEachPhase(op) map { case (ph, t) => "[after %-15s] %s".format(numberedPhase(ph), t) }
- // def describeAfterEveryPhase[T](op: => T): String =
- // describeAfterEachPhase(op) map (" " + _ + "\n") mkString
+ def describeAfterEveryPhase[T](op: => T): String =
+ describeAfterEachPhase(op) map (" " + _ + "\n") mkString
- // def printAfterEachPhase[T](op: => T): Unit =
- // describeAfterEachPhase(op) foreach (m => println(" " + m))
+ def printAfterEachPhase[T](op: => T): Unit =
+ describeAfterEachPhase(op) foreach (m => println(" " + m))
// ------------ Invalidations ---------------------------------
@@ -1057,7 +1057,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
@inline final def exitingPostErasure[T](op: => T): T = exitingPhase(currentRun.posterasurePhase)(op)
@inline final def exitingExplicitOuter[T](op: => T): T = exitingPhase(currentRun.explicitouterPhase)(op)
@inline final def exitingFlatten[T](op: => T): T = exitingPhase(currentRun.flattenPhase)(op)
- // @inline final def exitingIcode[T](op: => T): T = exitingPhase(currentRun.icodePhase)(op)
+ @inline final def exitingIcode[T](op: => T): T = exitingPhase(currentRun.icodePhase)(op)
@inline final def exitingMixin[T](op: => T): T = exitingPhase(currentRun.mixinPhase)(op)
@inline final def exitingPickler[T](op: => T): T = exitingPhase(currentRun.picklerPhase)(op)
@inline final def exitingRefchecks[T](op: => T): T = exitingPhase(currentRun.refchecksPhase)(op)
@@ -1071,21 +1071,21 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
@inline final def enteringMixin[T](op: => T): T = enteringPhase(currentRun.mixinPhase)(op)
@inline final def enteringPickler[T](op: => T): T = enteringPhase(currentRun.picklerPhase)(op)
@inline final def enteringRefchecks[T](op: => T): T = enteringPhase(currentRun.refchecksPhase)(op)
- // @inline final def enteringSpecialize[T](op: => T): T = enteringPhase(currentRun.specializePhase)(op)
+ @inline final def enteringSpecialize[T](op: => T): T = enteringPhase(currentRun.specializePhase)(op)
@inline final def enteringTyper[T](op: => T): T = enteringPhase(currentRun.typerPhase)(op)
@inline final def enteringUncurry[T](op: => T): T = enteringPhase(currentRun.uncurryPhase)(op)
- // def explainContext(c: analyzer.Context): String = (
- // if (c == null) "" else (
- // """| context owners: %s
- // |
- // |Enclosing block or template:
- // |%s""".format(
- // c.owner.ownerChain.takeWhile(!_.isPackageClass).mkString(" -> "),
- // nodePrinters.nodeToString(c.enclClassOrMethod.tree)
- // )
- // )
- // )
+ def explainContext(c: analyzer.Context): String = (
+ if (c == null) "" else (
+ """| context owners: %s
+ |
+ |Enclosing block or template:
+ |%s""".format(
+ c.owner.ownerChain.takeWhile(!_.isPackageClass).mkString(" -> "),
+ nodePrinters.nodeToString(c.enclClassOrMethod.tree)
+ )
+ )
+ )
// Owners up to and including the first package class.
private def ownerChainString(sym: Symbol): String = (
if (sym == null) ""
@@ -1098,8 +1098,8 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
pairs.toList collect { case (k, v) if v != null => "%20s: %s".format(k, v) } mkString "\n"
)
- // def explainTree(t: Tree): String = formatExplain(
- // )
+ def explainTree(t: Tree): String = formatExplain(
+ )
/** Don't want to introduce new errors trying to report errors,
* so swallow exceptions.
@@ -1158,7 +1158,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
}
def newUnitParser(code: String) = new syntaxAnalyzer.UnitParser(newCompilationUnit(code))
- // def newUnitScanner(code: String) = new syntaxAnalyzer.UnitScanner(newCompilationUnit(code))
+ def newUnitScanner(code: String) = new syntaxAnalyzer.UnitScanner(newCompilationUnit(code))
def newCompilationUnit(code: String) = new CompilationUnit(newSourceFile(code))
def newSourceFile(code: String) = new BatchSourceFile("<console>", code)
@@ -1181,8 +1181,9 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
val inlinerWarnings = new ConditionalWarning("inliner", settings.YinlinerWarnings)
val allConditionalWarnings = List(deprecationWarnings0, uncheckedWarnings0, featureWarnings, inlinerWarnings)
- def uncheckedWarnings: List[(Position, String)] = uncheckedWarnings0.warnings.toList // used in sbt
- def deprecationWarnings: List[(Position, String)] = deprecationWarnings0.warnings.toList // used in sbt
+ // for sbt's benefit
+ def uncheckedWarnings: List[(Position, String)] = uncheckedWarnings0.warnings.toList
+ def deprecationWarnings: List[(Position, String)] = deprecationWarnings0.warnings.toList
var reportedFeature = Set[Symbol]()
@@ -1349,7 +1350,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
val namerPhase = phaseNamed("namer")
// val packageobjectsPhase = phaseNamed("packageobjects")
val typerPhase = phaseNamed("typer")
- // val inlineclassesPhase = phaseNamed("inlineclasses")
+ val inlineclassesPhase = phaseNamed("inlineclasses")
// val superaccessorsPhase = phaseNamed("superaccessors")
val picklerPhase = phaseNamed("pickler")
val refchecksPhase = phaseNamed("refchecks")
@@ -1362,7 +1363,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
val erasurePhase = phaseNamed("erasure")
val posterasurePhase = phaseNamed("posterasure")
// val lazyvalsPhase = phaseNamed("lazyvals")
- // val lambdaliftPhase = phaseNamed("lambdalift")
+ val lambdaliftPhase = phaseNamed("lambdalift")
// val constructorsPhase = phaseNamed("constructors")
val flattenPhase = phaseNamed("flatten")
val mixinPhase = phaseNamed("mixin")
@@ -1372,11 +1373,11 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
val inlineExceptionHandlersPhase = phaseNamed("inlineExceptionHandlers")
val closelimPhase = phaseNamed("closelim")
val dcePhase = phaseNamed("dce")
- // val jvmPhase = phaseNamed("jvm")
+ val jvmPhase = phaseNamed("jvm")
// val msilPhase = phaseNamed("msil")
def runIsAt(ph: Phase) = globalPhase.id == ph.id
- // def runIsPast(ph: Phase) = globalPhase.id > ph.id
+ def runIsPast(ph: Phase) = globalPhase.id > ph.id
// def runIsAtBytecodeGen = (runIsAt(jvmPhase) || runIsAt(msilPhase))
def runIsAtOptimiz = {
runIsAt(inlinerPhase) || // listing phases in full for robustness when -Ystop-after has been given.
@@ -1742,7 +1743,7 @@ class Global(var currentSettings: Settings, var reporter: Reporter)
// and forScaladoc default to onlyPresentation, which is the same as defaulting
// to false except in old code. The downside is that this leaves us calling a
// deprecated method: but I see no simple way out, so I leave it for now.
- // def forJVM = settings.target.value startsWith "jvm"
+ def forJVM = settings.target.value startsWith "jvm"
override def forMSIL = settings.target.value startsWith "msil"
def forInteractive = false
def forScaladoc = false