summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2010-04-27 14:04:02 +0000
committerAdriaan Moors <adriaan.moors@epfl.ch>2010-04-27 14:04:02 +0000
commit15fecdc78e66bb93ff0db9f4cdcf50f9c85fc190 (patch)
treef56da78b70c319702aab21994213c38e3dedc593 /src
parentfa715fdd66f444d756ffe91417ac0937f7de6592 (diff)
downloadscala-15fecdc78e66bb93ff0db9f4cdcf50f9c85fc190.tar.gz
scala-15fecdc78e66bb93ff0db9f4cdcf50f9c85fc190.tar.bz2
scala-15fecdc78e66bb93ff0db9f4cdcf50f9c85fc190.zip
fixed #3349 : method symbol cached too aggressi...
fixed #3349 : method symbol cached too aggressively cooking raw types changes a symbol's info, but the change was masked by caching in MethodSymbol review by odersky
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Symbols.scala6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
index 3c7fdd4e3e..ebab5d9be7 100644
--- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
@@ -1747,20 +1747,22 @@ trait Symbols extends reflect.generic.Symbols { self: SymbolTable =>
private var mtpePeriod = NoPeriod
private var mtpePre: Type = _
private var mtpeResult: Type = _
+ private var mtpeInfo: Type = _
override def cloneSymbolImpl(owner: Symbol): Symbol =
new MethodSymbol(owner, pos, name).copyAttrsFrom(this)
def typeAsMemberOf(pre: Type): Type = {
if (mtpePeriod == currentPeriod) {
- if (mtpePre eq pre) return mtpeResult
+ if ((mtpePre eq pre) && (mtpeInfo eq info)) return mtpeResult
} else if (isValid(mtpePeriod)) {
mtpePeriod = currentPeriod
- if (mtpePre eq pre) return mtpeResult
+ if ((mtpePre eq pre) && (mtpeInfo eq info)) return mtpeResult
}
val res = pre.computeMemberType(this)
mtpePeriod = currentPeriod
mtpePre = pre
+ mtpeInfo = info
mtpeResult = res
res
}