Skip to content

Commit 5db64c3

Browse files
committed
Fix hashcodes of inner case classes in NameKinds
See #9748 for why this is necessary
1 parent 9982d19 commit 5db64c3

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

compiler/src/dotty/tools/dotc/core/NameKinds.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ object NameKinds {
124124
case class QualInfo(name: SimpleName) extends Info with QualifiedInfo {
125125
override def map(f: SimpleName => SimpleName): NameInfo = new QualInfo(f(name))
126126
override def toString: String = s"$infoString $name"
127+
override def hashCode = scala.runtime.ScalaRunTime._hashCode(this) * 31 + kind.hashCode
127128
}
128129

129130
def apply(qual: TermName, name: SimpleName): TermName =
@@ -173,6 +174,7 @@ object NameKinds {
173174
type ThisInfo = NumberedInfo
174175
case class NumberedInfo(val num: Int) extends Info with NameKinds.NumberedInfo {
175176
override def toString: String = s"$infoString $num"
177+
override def hashCode = scala.runtime.ScalaRunTime._hashCode(this) * 31 + kind.hashCode
176178
}
177179
def apply(qual: TermName, num: Int): TermName =
178180
qual.derived(new NumberedInfo(num))
@@ -371,6 +373,7 @@ object NameKinds {
371373
case class SignedInfo(sig: Signature) extends Info {
372374
assert(sig ne Signature.NotAMethod)
373375
override def toString: String = s"$infoString $sig"
376+
override def hashCode = scala.runtime.ScalaRunTime._hashCode(this) * 31 + kind.hashCode
374377
}
375378
type ThisInfo = SignedInfo
376379

0 commit comments

Comments
 (0)