aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Denotations.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-01-12 18:40:09 +0100
committerMartin Odersky <odersky@gmail.com>2013-01-12 18:40:09 +0100
commit2e7af7a6f52230655c60b9e15e4f2a7ed76391b0 (patch)
treed16d1aed083c3118e113136020332cee53885d35 /src/dotty/tools/dotc/core/Denotations.scala
parentf703cd3b404a8a996b8ad100b4a43acb5cdd73a8 (diff)
downloaddotty-2e7af7a6f52230655c60b9e15e4f2a7ed76391b0.tar.gz
dotty-2e7af7a6f52230655c60b9e15e4f2a7ed76391b0.tar.bz2
dotty-2e7af7a6f52230655c60b9e15e4f2a7ed76391b0.zip
Invalidate baseType caches on new runs
Diffstat (limited to 'src/dotty/tools/dotc/core/Denotations.scala')
-rw-r--r--src/dotty/tools/dotc/core/Denotations.scala7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/Denotations.scala b/src/dotty/tools/dotc/core/Denotations.scala
index 7f227ae9b..625189a9d 100644
--- a/src/dotty/tools/dotc/core/Denotations.scala
+++ b/src/dotty/tools/dotc/core/Denotations.scala
@@ -262,6 +262,7 @@ object Denotations {
}
private var baseTypeCache: java.util.HashMap[CachedType, Type] = null
+ private var baseTypeValid: RunId = NoRunId
final def baseTypeOf(tp: Type)(implicit ctx: Context): Type = {
@@ -283,11 +284,13 @@ object Denotations {
else reduce(NoType, classd.parents).substThis(classd.clazz, tp.prefix)
}
- if (clazz.isStatic && clazz.typeParams.isEmpty) clazz.typeConstructor
+ if (clazz.isStaticMono) clazz.typeConstructor
else tp match {
case tp: CachedType =>
- if (baseTypeCache == null)
+ if (baseTypeValid != ctx.runId) {
baseTypeCache = new java.util.HashMap[CachedType, Type]
+ baseTypeValid = ctx.runId
+ }
var basetp = baseTypeCache get tp
if (basetp == null) {
baseTypeCache.put(tp, NoType)