diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt index 5ab049ef4a9..9bb087763b3 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirConflictsHelpers.kt @@ -63,7 +63,7 @@ private fun FirBasedSymbol<*>.isCollectable(): Boolean { return when (this) { // - see tests with `fun () {}`. // you can't redeclare something that has no name. - is FirNamedFunctionSymbol -> source?.kind !is KtFakeSourceElementKind && name != SpecialNames.NO_NAME_PROVIDED + is FirNamedFunctionSymbol -> isCollectableAccordingToSource && name != SpecialNames.NO_NAME_PROVIDED is FirRegularClassSymbol -> name != SpecialNames.NO_NAME_PROVIDED // - see testEnumValuesValueOf. // it generates a static function that has @@ -76,6 +76,9 @@ private fun FirBasedSymbol<*>.isCollectable(): Boolean { } } +private val FirNamedFunctionSymbol.isCollectableAccordingToSource: Boolean + get() = source?.kind !is KtFakeSourceElementKind || source?.kind == KtFakeSourceElementKind.DataClassGeneratedMembers + private val FirBasedSymbol<*>.resolvedStatus get() = when (this) { is FirCallableSymbol<*> -> resolvedStatus diff --git a/compiler/testData/diagnostics/tests/annotations/rendering/conflictingOverloads.fir.kt b/compiler/testData/diagnostics/tests/annotations/rendering/conflictingOverloads.fir.kt index fdd2776bba6..ca520443b2a 100644 --- a/compiler/testData/diagnostics/tests/annotations/rendering/conflictingOverloads.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/rendering/conflictingOverloads.fir.kt @@ -4,7 +4,7 @@ annotation class An @An -data class A(@An val x: @An Int) { - @An - fun copy(@An x: @An Int) = x +data class A(@An val x: @An Int) { + @An + fun copy(@An x: @An Int) = x } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/dataClasses/conflictingCopyOverloads.fir.kt b/compiler/testData/diagnostics/tests/dataClasses/conflictingCopyOverloads.fir.kt index 6433094e08a..0d0be4598da 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/conflictingCopyOverloads.fir.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/conflictingCopyOverloads.fir.kt @@ -1,6 +1,6 @@ // !DIAGNOSTICS: -UNUSED_PARAMETER -data class A(val x: Int, val y: String) { +data class A(val x: Int, val y: String) { fun copy(x: Int, y: String) = x fun copy(x: Int, y: String) = A(x, y) } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyNoDefaults.fir.kt b/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyNoDefaults.fir.kt index 67177e2ebe9..0ee96f139d9 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyNoDefaults.fir.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyNoDefaults.fir.kt @@ -4,6 +4,6 @@ interface WithCopy { fun copy(str: T): WithCopy } -data class Test(val str: String) : WithCopy { - override fun copy(str: String) = Test(str) +data class Test(val str: String) : WithCopy { + override fun copy(str: String) = Test(str) } diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyWithDefaults.fir.kt b/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyWithDefaults.fir.kt index b41114558c9..a0bad25ba65 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyWithDefaults.fir.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/dataClassExplicitlyOverridingCopyWithDefaults.fir.kt @@ -4,6 +4,6 @@ interface WithCopy { fun copy(str: T): WithCopy } -data class Test(val str: String) : WithCopy { - override fun copy(str: String = this.str) = Test(str) +data class Test(val str: String) : WithCopy { + override fun copy(str: String = this.str) = Test(str) }