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) {
41
41
42
42
private var myValueSymbols : List [Symbol ] = Nil
43
43
private var myCaseSymbols : List [Symbol ] = Nil
44
+ private var myCaseModuleSymbols : List [Symbol ] = Nil
44
45
45
46
private def initSymbols (implicit ctx : Context ) =
46
47
if (myValueSymbols.isEmpty) {
47
48
myValueSymbols = List (defn.Any_hashCode , defn.Any_equals )
48
49
myCaseSymbols = myValueSymbols ++ List (defn.Any_toString , defn.Product_canEqual ,
49
50
defn.Product_productArity , defn.Product_productPrefix , defn.Product_productElement )
51
+ myCaseModuleSymbols = myCaseSymbols.filter(_ ne defn.Any_equals )
50
52
}
51
53
52
54
def valueSymbols (implicit ctx : Context ) = { initSymbols; myValueSymbols }
53
55
def caseSymbols (implicit ctx : Context ) = { initSymbols; myCaseSymbols }
56
+ def caseModuleSymbols (implicit ctx : Context ) = { initSymbols; myCaseModuleSymbols }
54
57
55
58
/** The synthetic methods of the case or value class `clazz`. */
56
59
def syntheticMethods (clazz : ClassSymbol )(implicit ctx : Context ): List [Tree ] = {
@@ -60,7 +63,10 @@ class SyntheticMethods(thisTransformer: DenotTransformer) {
60
63
else clazz.caseAccessors
61
64
62
65
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
+ }
64
70
else if (isDerivedValueClass(clazz)) valueSymbols
65
71
else Nil
66
72
You can’t perform that action at this time.
0 commit comments