File tree Expand file tree Collapse file tree 1 file changed +7
-1
lines changed
compiler/src/dotty/tools/dotc/transform Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Original file line number Diff line number Diff 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 ] = {
@@ -60,7 +63,10 @@ class SyntheticMethods(thisTransformer: DenotTransformer) {
6063 else clazz.caseAccessors
6164
6265 val symbolsToSynthesize : List [Symbol ] =
63- if (clazz.is(Case )) caseSymbols
66+ if (clazz.is(Case )) {
67+ if (clazz.is(Module )) caseModuleSymbols
68+ else caseSymbols
69+ }
6470 else if (isDerivedValueClass(clazz)) valueSymbols
6571 else Nil
6672
You can’t perform that action at this time.
0 commit comments