diff options
author | Martin Odersky <odersky@gmail.com> | 2011-10-07 12:21:13 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-10-07 12:21:13 +0000 |
commit | e8451c2a8be03d9b1bc98482249b1f0c224e8ec4 (patch) | |
tree | 17a07f1c7e488ce445780196d56658837de7b7fc /src/compiler/scala/reflect/internal/Symbols.scala | |
parent | bcd155beb93be6bfda46e9578f7a9014e4842bd6 (diff) | |
download | scala-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.scala | 8 |
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 |