|
Scala example source code file (PresentationCompilerThread.scala)
The Scala PresentationCompilerThread.scala source code
/* NSC -- new Scala compiler
* Copyright 2009-2011 Scala Solutions and LAMP/EPFL
* @author Martin Odersky
* @author Iulian Dragos
*/
package scala.tools.nsc.interactive
/** A presentation compiler thread. This is a lightweight class, delegating most
* of its functionality to the compiler instance.
*
*/
final class PresentationCompilerThread(var compiler: Global, name: String = "")
extends Thread("Scala Presentation Compiler [" + name + "]") {
/** The presentation compiler loop.
*/
override def run() {
compiler.debugLog("starting new runner thread")
while (compiler ne null) try {
compiler.checkNoResponsesOutstanding()
compiler.log.logreplay("wait for more work", { compiler.scheduler.waitForMoreWork(); true })
compiler.pollForWork(compiler.NoPosition)
while (compiler.isOutOfDate) {
try {
compiler.backgroundCompile()
} catch {
case ex: FreshRunReq =>
compiler.debugLog("fresh run req caught, starting new pass")
}
compiler.log.flush()
}
} catch {
case ex @ ShutdownReq =>
compiler.debugLog("exiting presentation compiler")
compiler.log.close()
// make sure we don't keep around stale instances
compiler = null
case ex =>
compiler.log.flush()
ex match {
case ex: FreshRunReq =>
compiler.debugLog("fresh run req caught outside presentation compiler loop; ignored") // This shouldn't be reported
case _ : Global#ValidateException => // This will have been reported elsewhere
compiler.debugLog("validate exception caught outside presentation compiler loop; ignored")
case _ => ex.printStackTrace(); compiler.informIDE("Fatal Error: "+ex)
}
}
}
}
Other Scala examples (source code examples)Here is a short list of links related to this Scala PresentationCompilerThread.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.