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 ] = {
@@ -62,7 +65,10 @@ class SyntheticMethods(thisTransformer: DenotTransformer) {
62
65
clazz.caseAccessors
63
66
64
67
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
+ }
66
72
else if (isDerivedValueClass(clazz)) valueSymbols
67
73
else Nil
68
74
You can’t perform that action at this time.
0 commit comments