summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Symbols.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-10-07 12:21:13 +0000
committerMartin Odersky <odersky@gmail.com>2011-10-07 12:21:13 +0000
commite8451c2a8be03d9b1bc98482249b1f0c224e8ec4 (patch)
tree17a07f1c7e488ce445780196d56658837de7b7fc /src/compiler/scala/reflect/internal/Symbols.scala
parentbcd155beb93be6bfda46e9578f7a9014e4842bd6 (diff)
downloadscala-e8451c2a8be03d9b1bc98482249b1f0c224e8ec4.tar.gz
scala-e8451c2a8be03d9b1bc98482249b1f0c224e8ec4.tar.bz2
scala-e8451c2a8be03d9b1bc98482249b1f0c224e8ec4.zip
Fixed overzealous caching of implicit members i...
Fixed overzealous caching of implicit members in module classes. Fixes IDE ticket #1000647 "Implicit conversion not applied". Review by dotta. Still needs to be backported to 2.9.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Symbols.scala')
-rw-r--r--src/compiler/scala/reflect/internal/Symbols.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/scala/reflect/internal/Symbols.scala b/src/compiler/scala/reflect/internal/Symbols.scala
index 42265d6969..533a343589 100644
--- a/src/compiler/scala/reflect/internal/Symbols.scala
+++ b/src/compiler/scala/reflect/internal/Symbols.scala
@@ -2322,11 +2322,13 @@ trait Symbols extends api.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