|
Scala example source code file (SelectiveCPSPlugin.scala)
The Scala SelectiveCPSPlugin.scala source code
// $Id$
package scala.tools.selectivecps
import scala.tools.nsc
import scala.tools.nsc.typechecker._
import nsc.Global
import nsc.Phase
import nsc.plugins.Plugin
import nsc.plugins.PluginComponent
class SelectiveCPSPlugin(val global: Global) extends Plugin {
import global._
val name = "continuations"
val description = "applies selective cps conversion"
val anfPhase = new SelectiveANFTransform() {
val global = SelectiveCPSPlugin.this.global
val runsAfter = List("pickler")
}
val cpsPhase = new SelectiveCPSTransform() {
val global = SelectiveCPSPlugin.this.global
val runsAfter = List("selectiveanf")
}
val components = List[PluginComponent](anfPhase, cpsPhase)
val checker = new CPSAnnotationChecker {
val global: SelectiveCPSPlugin.this.global.type = SelectiveCPSPlugin.this.global
}
global.addAnnotationChecker(checker.checker)
global.log("instantiated cps plugin: " + this)
def setEnabled(flag: Boolean) = {
checker.cpsEnabled = flag
anfPhase.cpsEnabled = flag
cpsPhase.cpsEnabled = flag
}
// TODO: require -enabled command-line flag
override def processOptions(options: List[String], error: String => Unit) = {
var enabled = false
for (option <- options) {
if (option == "enable") {
enabled = true
} else {
error("Option not understood: "+option)
}
}
setEnabled(enabled)
}
override val optionsHelp: Option[String] =
Some(" -P:continuations:enable Enable continuations")
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala SelectiveCPSPlugin.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.