diff options
author | Martin Odersky <odersky@gmail.com> | 2010-08-30 16:02:34 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2010-08-30 16:02:34 +0000 |
commit | 8964f6f1bcc8500f1bc6a2808ef70d8852d208ec (patch) | |
tree | cc558460d2f7be3238af3bf80bc95f5422313641 /src/compiler/scala/tools/nsc/interactive/CompilerControl.scala | |
parent | 41e2c237dfdcaffaa53edc6ef30b044353bce5e4 (diff) | |
download | scala-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.scala | 32 |
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 } |