Skip to content

Commit 02404ac

Browse files
committed
Fix equals method for value classes
Before this commit, the following class: class VC(val x: Int) extends AnyVal resulted in the creation of the method: def equals(val x$0: Any): Boolean = x$0 match { case x$0 @ _: VC => true case _: Any => false } After this commit, we get instead: def equals(val x$0: Any): Boolean = x$0 match { case x$0 @ _: VC => VC.this.a.==(x$0.a) case _: Any => false }
1 parent 2e72811 commit 02404ac

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@ class SyntheticMethods extends MiniPhaseTransform with IdentityDenotTransformer
4949
*/
5050
def syntheticMethods(clazz: ClassSymbol)(implicit ctx: Context): List[Tree] = {
5151
val clazzType = clazz.typeRef
52-
lazy val accessors = clazz.caseAccessors
52+
lazy val accessors =
53+
if (isDerivedValueClass(clazz))
54+
clazz.paramAccessors
55+
else
56+
clazz.caseAccessors
5357

5458
val symbolsToSynthesize: List[Symbol] =
5559
if (clazz.is(Case)) caseSymbols

0 commit comments

Comments
 (0)