Skip to content

Commit c8eed58

Browse files
committed
Do not generate equals method for case object
1 parent 58ca93d commit c8eed58

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

compiler/src/dotty/tools/dotc/transform/SyntheticMethods.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,19 @@ class SyntheticMethods(thisTransformer: DenotTransformer) {
4141

4242
private var myValueSymbols: List[Symbol] = Nil
4343
private var myCaseSymbols: List[Symbol] = Nil
44+
private var myCaseModuleSymbols: List[Symbol] = Nil
4445

4546
private def initSymbols(implicit ctx: Context) =
4647
if (myValueSymbols.isEmpty) {
4748
myValueSymbols = List(defn.Any_hashCode, defn.Any_equals)
4849
myCaseSymbols = myValueSymbols ++ List(defn.Any_toString, defn.Product_canEqual,
4950
defn.Product_productArity, defn.Product_productPrefix, defn.Product_productElement)
51+
myCaseModuleSymbols = myCaseSymbols.filter(_ ne defn.Any_equals)
5052
}
5153

5254
def valueSymbols(implicit ctx: Context) = { initSymbols; myValueSymbols }
5355
def caseSymbols(implicit ctx: Context) = { initSymbols; myCaseSymbols }
56+
def caseModuleSymbols(implicit ctx: Context) = { initSymbols; myCaseModuleSymbols }
5457

5558
/** The synthetic methods of the case or value class `clazz`. */
5659
def syntheticMethods(clazz: ClassSymbol)(implicit ctx: Context): List[Tree] = {
@@ -62,7 +65,10 @@ class SyntheticMethods(thisTransformer: DenotTransformer) {
6265
clazz.caseAccessors
6366

6467
val symbolsToSynthesize: List[Symbol] =
65-
if (clazz.is(Case)) caseSymbols
68+
if (clazz.is(Case)) {
69+
if (clazz.is(Module)) caseModuleSymbols
70+
else caseSymbols
71+
}
6672
else if (isDerivedValueClass(clazz)) valueSymbols
6773
else Nil
6874

0 commit comments

Comments
 (0)