diff options
author | Martin Odersky <odersky@gmail.com> | 2011-03-10 14:43:05 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-03-10 14:43:05 +0000 |
commit | 67c461b2d9c19d51e40e1f3ff23455cead1413b5 (patch) | |
tree | 1038c3d57481125563baa0409d8f547c42c98a3a | |
parent | 50cff4d634c01cb1418e0d27d113f05b5dcf5cbf (diff) | |
download | scala-67c461b2d9c19d51e40e1f3ff23455cead1413b5.tar.gz scala-67c461b2d9c19d51e40e1f3ff23455cead1413b5.tar.bz2 scala-67c461b2d9c19d51e40e1f3ff23455cead1413b5.zip |
Added askStructure method.
-rw-r--r-- | src/compiler/scala/tools/nsc/interactive/CompilerControl.scala | 11 |
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. |