summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-03-10 14:43:05 +0000
committerMartin Odersky <odersky@gmail.com>2011-03-10 14:43:05 +0000
commit67c461b2d9c19d51e40e1f3ff23455cead1413b5 (patch)
tree1038c3d57481125563baa0409d8f547c42c98a3a
parent50cff4d634c01cb1418e0d27d113f05b5dcf5cbf (diff)
downloadscala-67c461b2d9c19d51e40e1f3ff23455cead1413b5.tar.gz
scala-67c461b2d9c19d51e40e1f3ff23455cead1413b5.tar.bz2
scala-67c461b2d9c19d51e40e1f3ff23455cead1413b5.zip
Added askStructure method.
-rw-r--r--src/compiler/scala/tools/nsc/interactive/CompilerControl.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
index 8c1f1c7db2..05eaff9aa9 100644
--- a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
+++ b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala
@@ -173,6 +173,17 @@ trait CompilerControl { self: Global =>
def askLoadedTyped(source: SourceFile, response: Response[Tree]) =
scheduler postWorkItem new AskLoadedTypedItem(source, response)
+ /** If source if not yet loaded, get an outline view with askParseEntered.
+ * If source is loaded, wait for it to be typechecked.
+ * In both cases, set response to parsed (and possibly typechecked) tree.
+ */
+ def askStructure(source: SourceFile, response: Response[Tree]) = {
+ getUnit(source) match {
+ case Some(_) => askLoadedTyped(source, response)
+ case None => askParsedEntered(source, false, response)
+ }
+ }
+
/** Set sync var `response` to the parse tree of `source` with all top-level symbols entered.
* @param source The source file to be analyzed
* @param keepLoaded If set to `true`, source file will be kept as a loaded unit afterwards.