Stoppen der Scala -Zusammenstellung nach einer bestimmten Phase
-
25-10-2019 - |
Frage
Ich teste mein Plugin, indem ich es in Prozess so ausführe:
type PluginMessage = StoreReporter#Info
def runPlugin(fileName: String): List[PluginMessage] = {
val settings = new Settings
settings.outputDirs setSingleOutput (curDir + "/target")
settings.classpath.tryToSet(List(
"project/boot/scala-" + scalaVersion + "/lib/scala-compiler.jar" +
":project/boot/scala-" + scalaVersion + "/lib/scala-library.jar"))
val reporter = new StoreReporter
val compiler = new Global(settings, reporter) {
override protected def computeInternalPhases() {
super.computeInternalPhases
for (phase <- new AlacsPlugin(this).components)
phasesSet += phase
}
}
(new compiler.Run).compile(List(testPrefix + fileName))
reporter.infos.toList
}
Angesichts der langsamen Geschwindigkeit von jedoch scalac
Ich möchte wirklich, dass Compilation nach einer bestimmten Phase endet (insbesondere nach meinem Plugin). Leider Global.cancel
hat nicht die beabsichtigte Wirkung. Wie könnte ich das machen?
Lösung
Scalac hat ein Argument ausdrücklich zu diesem Zweck. Ab 2.9.0.RC2 können Sie in der Befehlszeile angeben:
-Ystop-after:<phasename>
Und in früheren Versionen:
-Ystop:<phasename>
Das Äquivalent direkt von a machen Settings
Instanz ist definiert als stopAfter
(oder stop
in früheren Versionen)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow