arrêter la compilation Scala après une phase particulière
-
25-10-2019 - |
Question
Je teste mon plug-in en l'exécutant en cours comme ceci:
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
}
Cependant, étant donné la vitesse lente de scalac
je voudrais vraiment que pour la compilation à la fin après une certaine phase (plus précisément, après mes courses de plug-in). Malheureusement Global.cancel
n'a pas l'effet escompté. Comment pourrais-je faire?
La solution
scalac a un argument explicite à cet effet. A partir de 2.9.0.RC2 vous pouvez spécifier à la ligne de commande:
-Ystop-after:<phasename>
Et dans les versions antérieures:
-Ystop:<phasename>
Pour l'équivalent directement à partir d'une instance de Settings
, cela est défini comme stopAfter
(ou stop
dans les versions antérieures)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow