diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Symbols.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala index 5c43f892a5..58c87e2215 100644 --- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala +++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala @@ -2050,7 +2050,16 @@ trait Symbols extends reflect.generic.Symbols { self: SymbolTable => sourceModule = module } override def sourceModule = module - lazy val implicitMembers = info.implicitMembers + private var implicitMembersCacheValue: List[Symbol] = List() + private var implicitMembersCacheKey: Type = NoType + def implicitMembers: List[Symbol] = { + val tp = info + if (implicitMembersCacheKey ne tp) { + implicitMembersCacheKey = tp + implicitMembersCacheValue = tp.implicitMembers + } + implicitMembersCacheValue + } override def sourceModule_=(module: Symbol) { this.module = module } } |