From ef8bcceb8eaa5aef5ee0c4306f672362cd6f9e24 Mon Sep 17 00:00:00 2001 From: "simon.ogorodnik" Date: Mon, 27 Apr 2020 21:57:27 +0300 Subject: [PATCH] [FIR2IR] Use only data class primary constructor parameters for equals --- .../fir/backend/generators/DataClassMembersGenerator.kt | 6 +++++- .../codegen/box/secondaryConstructors/dataClasses.kt | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt index e755641f1f4..1fcec1cea04 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt @@ -119,7 +119,11 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) { (this.name == toStringName && matchesToStringSignature) fun generate(klass: FirClass<*>): List { - val properties = irClass.declarations.filterIsInstance().map { it.descriptor } + val propertyParametersCount = irClass.primaryConstructor?.explicitParameters?.size ?: 0 + val properties = irClass.declarations + .filterIsInstance() + .take(propertyParametersCount) + .map { it.descriptor } if (properties.isEmpty()) { return emptyList() } diff --git a/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt b/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt index 1ffe30657af..074508611b6 100644 --- a/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt +++ b/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR internal data class A1(val prop1: String) { val prop2: String = "const2" var prop3: String = ""