aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Symbols.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-02-07 13:53:06 +0100
committerMartin Odersky <odersky@gmail.com>2013-02-07 13:53:06 +0100
commit00cd39af75830fe1acab0f4b3b19646375ac2ea8 (patch)
tree97f863ad7053a0ebe2afabe889af98450c865c1c /src/dotty/tools/dotc/core/Symbols.scala
parent5ec4e3db6e48f8c36dff67ba262a8b41647cef5c (diff)
downloaddotty-00cd39af75830fe1acab0f4b3b19646375ac2ea8.tar.gz
dotty-00cd39af75830fe1acab0f4b3b19646375ac2ea8.tar.bz2
dotty-00cd39af75830fe1acab0f4b3b19646375ac2ea8.zip
Make superId management depend on TypeRefs instead of ClassSymbols.
Reason: Symbols may change on each run; TypeRefs do not.
Diffstat (limited to 'src/dotty/tools/dotc/core/Symbols.scala')
-rw-r--r--src/dotty/tools/dotc/core/Symbols.scala9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala
index 348fc4848..c345128b3 100644
--- a/src/dotty/tools/dotc/core/Symbols.scala
+++ b/src/dotty/tools/dotc/core/Symbols.scala
@@ -185,15 +185,16 @@ object Symbols {
def superId(implicit ctx: Context): Int = {
val hint = superIdHint
- if (hint >= 0 && hint <= ctx.lastSuperId && (ctx.classOfId(hint) eq this)) hint
+ val key = this.typeConstructor
+ if (hint >= 0 && hint <= ctx.lastSuperId && (ctx.classOfId(hint) eq key)) hint
else {
- val id = ctx.superIdOfClass get this match {
+ val id = ctx.superIdOfClass get key match {
case Some(id) =>
id
case None =>
val id = ctx.nextSuperId
- ctx.superIdOfClass(this) = id
- ctx.classOfId(id) = this
+ ctx.superIdOfClass(key) = id
+ ctx.classOfId(id) = key
id
}
superIdHint = id