summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2010-08-30 16:02:34 +0000
committerMartin Odersky <odersky@gmail.com>2010-08-30 16:02:34 +0000
commit8964f6f1bcc8500f1bc6a2808ef70d8852d208ec (patch)
treecc558460d2f7be3238af3bf80bc95f5422313641 /src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
parent41e2c237dfdcaffaa53edc6ef30b044353bce5e4 (diff)
downloadscala-8964f6f1bcc8500f1bc6a2808ef70d8852d208ec.tar.gz
scala-8964f6f1bcc8500f1bc6a2808ef70d8852d208ec.tar.bz2
scala-8964f6f1bcc8500f1bc6a2808ef70d8852d208ec.zip
New wider interface of presentation compiler.
Diffstat (limited to 'src/compiler/scala/tools/nsc/interactive/CompilerControl.scala')
-rw-r--r--src/compiler/scala/tools/nsc/interactive/CompilerControl.scala32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
index c6106a9865..b00da77b46 100644
--- a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
+++ b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
@@ -1,7 +1,6 @@
package scala.tools.nsc
package interactive
-import scala.concurrent.SyncVar
import scala.util.control.ControlThrowable
import scala.tools.nsc.io.AbstractFile
import scala.tools.nsc.util.{SourceFile, Position, WorkScheduler}
@@ -12,14 +11,6 @@ import scala.tools.nsc.ast._
*/
trait CompilerControl { self: Global =>
- /** Response {
- override def toString = "TypeMember("+sym+","+tpe+","+accessible+","+inherited+","+viaView+")"
- }{
- override def toString = "TypeMember("+sym+","+tpe+","+accessible+","+inherited+","+viaView+")"
- }wrapper to client
- */
- type Response[T] = SyncVar[Either[T, Throwable]]
-
abstract class WorkItem extends (() => Unit)
/** Info given for every member found by completion
@@ -30,8 +21,18 @@ trait CompilerControl { self: Global =>
val accessible: Boolean
}
- case class TypeMember(sym: Symbol, tpe: Type, accessible: Boolean, inherited: Boolean, viaView: Symbol) extends Member
- case class ScopeMember(sym: Symbol, tpe: Type, accessible: Boolean, viaImport: Tree) extends Member
+ case class TypeMember(
+ sym: Symbol,
+ tpe: Type,
+ accessible: Boolean,
+ inherited: Boolean,
+ viaView: Symbol) extends Member
+
+ case class ScopeMember(
+ sym: Symbol,
+ tpe: Type,
+ accessible: Boolean,
+ viaImport: Tree) extends Member
/** The scheduler by which client and compiler communicate
* Must be initialized before starting compilerRunner
@@ -82,7 +83,7 @@ trait CompilerControl { self: Global =>
override def toString = "reload "+sources
}
- /** Set sync var `result` to a fully attributed tree located at position `pos`
+ /** Set sync var `result` to the smallest fully attributed tree that encloses position `pos`.
*/
def askTypeAt(pos: Position, result: Response[Tree]) =
scheduler postWorkItem new WorkItem {
@@ -90,6 +91,8 @@ trait CompilerControl { self: Global =>
override def toString = "typeat "+pos.source+" "+pos.show
}
+ /** Set sync var `result` to the fully attributed & typechecked tree contained in `source`.
+ */
def askType(source: SourceFile, forceReload: Boolean, result: Response[Tree]) =
scheduler postWorkItem new WorkItem {
def apply() = self.getTypedTree(source, forceReload, result)
@@ -98,7 +101,6 @@ trait CompilerControl { self: Global =>
/** Set sync var `result' to list of members that are visible
* as members of the tree enclosing `pos`, possibly reachable by an implicit.
- * - if `selection` is false, as identifiers in the scope enclosing `pos`
*/
def askTypeCompletion(pos: Position, result: Response[List[Member]]) =
scheduler postWorkItem new WorkItem {
@@ -123,9 +125,6 @@ trait CompilerControl { self: Global =>
}
}
- /** Cancel currently pending high-priority jobs */
- def askCancel() = scheduler raise CancelActionReq
-
/** Cancel current compiler run and start a fresh one where everything will be re-typechecked
* (but not re-loaded).
*/
@@ -139,7 +138,6 @@ trait CompilerControl { self: Global =>
// ---------------- Interpreted exceptions -------------------
- object CancelActionReq extends ControlThrowable
object FreshRunReq extends ControlThrowable
object ShutdownReq extends ControlThrowable
}