diff options
author | Martin Odersky <odersky@gmail.com> | 2013-01-12 18:40:09 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-01-12 18:40:09 +0100 |
commit | 2e7af7a6f52230655c60b9e15e4f2a7ed76391b0 (patch) | |
tree | d16d1aed083c3118e113136020332cee53885d35 /src | |
parent | f703cd3b404a8a996b8ad100b4a43acb5cdd73a8 (diff) | |
download | dotty-2e7af7a6f52230655c60b9e15e4f2a7ed76391b0.tar.gz dotty-2e7af7a6f52230655c60b9e15e4f2a7ed76391b0.tar.bz2 dotty-2e7af7a6f52230655c60b9e15e4f2a7ed76391b0.zip |
Invalidate baseType caches on new runs
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/Denotations.scala | 7 |
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) |