diff options
author | Paul Phillips <paulp@improving.org> | 2009-05-25 21:57:14 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-05-25 21:57:14 +0000 |
commit | 213285991d73a80b322c55000c69633893dccb80 (patch) | |
tree | 87313abebe991c8298771bfc5e316480fc123bad | |
parent | 4065255346820863bbc060bf4c34bb7353f3a0ae (diff) | |
download | scala-213285991d73a80b322c55000c69633893dccb80.tar.gz scala-213285991d73a80b322c55000c69633893dccb80.tar.bz2 scala-213285991d73a80b322c55000c69633893dccb80.zip |
Modified UniqueTypes not to interfere with thei...
Modified UniqueTypes not to interfere with their hashCode. Should fix
the random build failures involving missing keys (once it's in starr.)
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 3db4e372aa..6bba3e74bf 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -818,8 +818,7 @@ trait Types { // Subclasses ------------------------------------------------------------ trait UniqueType { - private val hashcode = { val h = super.hashCode(); if (h < 0) -h else h } - override def hashCode() = hashcode + override lazy val hashCode: Int = super.hashCode() } /** A base class for types that defer some operations * to their immediate supertype. @@ -2297,11 +2296,9 @@ A type's typeSymbol should never be inspected directly. uniques = new HashSet(20000) uniqueRunId = currentRunId } - val tp1 = uniques.findEntry(tp) - if (tp1 eq null) { - uniques.addEntry(tp); tp - } else { - tp1.asInstanceOf[T] + uniques.findEntry(tp) match { + case null => uniques.addEntry(tp); tp + case tp1 => tp1.asInstanceOf[T] } } |