diff options
author | Antonio Cunei <antonio.cunei@epfl.ch> | 2011-10-07 15:04:34 +0000 |
---|---|---|
committer | Antonio Cunei <antonio.cunei@epfl.ch> | 2011-10-07 15:04:34 +0000 |
commit | 7e2d78266f0a677e9e81fa012178811321626736 (patch) | |
tree | c043c983a27ce69bc68f23270fe17541eb3a5b8f | |
parent | 8a3e7e1d3f9c54fd21ed5292474e1079703940c9 (diff) | |
download | scala-7e2d78266f0a677e9e81fa012178811321626736.tar.gz scala-7e2d78266f0a677e9e81fa012178811321626736.tar.bz2 scala-7e2d78266f0a677e9e81fa012178811321626736.zip |
backport of 25800,25801
-rw-r--r-- | src/compiler/scala/tools/nsc/interactive/CompilerControl.scala | 5 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Symbols.scala | 8 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala index 7b84901604..b466cfe2db 100644 --- a/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala +++ b/src/compiler/scala/tools/nsc/interactive/CompilerControl.scala @@ -187,11 +187,12 @@ trait CompilerControl { self: Global => /** 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. + * @param keepSrcLoaded If set to `true`, source file will be kept as a loaded unit afterwards. */ - def askStructure(source: SourceFile, response: Response[Tree]) = { + def askStructure(keepSrcLoaded: Boolean)(source: SourceFile, response: Response[Tree]) = { getUnit(source) match { case Some(_) => askLoadedTyped(source, response) - case None => askParsedEntered(source, false, response) + case None => askParsedEntered(source, keepSrcLoaded, response) } } diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala index c78d05cd7e..359aabdf95 100644 --- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala +++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala @@ -2056,11 +2056,13 @@ trait Symbols extends reflect.generic.Symbols { self: SymbolTable => } override def sourceModule = module private var implicitMembersCacheValue: List[Symbol] = List() - private var implicitMembersCacheKey: Type = NoType + private var implicitMembersCacheKey1: Type = NoType + private var implicitMembersCacheKey2: ScopeEntry = null def implicitMembers: List[Symbol] = { val tp = info - if (implicitMembersCacheKey ne tp) { - implicitMembersCacheKey = tp + if ((implicitMembersCacheKey1 ne tp) || (implicitMembersCacheKey2 ne tp.decls.elems)) { + implicitMembersCacheKey1 = tp + implicitMembersCacheKey2 = tp.decls.elems implicitMembersCacheValue = tp.implicitMembers } implicitMembersCacheValue |