diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/interactive/CompilerControl.scala')
-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. |