[FIR] 2/2 AbstractExpectActualChecker & FirExpectActualResolver: don't match with private expect callables

^KT-68674 Fixed
Review: https://jetbrains.team/p/kt/reviews/16291/timeline

== Related issue: KT-68688

Test for the related case (private constructor) is already presented
compiler/testData/diagnostics/tests/multiplatform/sealedClassWithPrivateConstructor.kt

== Alternative fix

Prohibit matching with privates in AbstractExpectActualMatcher. It's a
worse fix because IDE navigation between declarations will break
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt
index 7b802f0..0700423 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualResolver.kt
@@ -5,6 +5,7 @@
 
 package org.jetbrains.kotlin.fir.resolve.transformers.mpp
 
+import org.jetbrains.kotlin.descriptors.Visibilities
 import org.jetbrains.kotlin.fir.FirExpectActualMatchingContext
 import org.jetbrains.kotlin.fir.FirSession
 import org.jetbrains.kotlin.fir.declarations.ExpectForActualMatchingData
@@ -60,8 +61,9 @@
                     }
                     val transitiveDependsOn = actualSymbol.moduleData.allDependsOnDependencies
                     candidates.filter { expectSymbol ->
-                        actualSymbol != expectSymbol && (expectContainingClass != null /*match fake overrides*/ ||
-                                expectSymbol.isExpect && expectSymbol.moduleData in transitiveDependsOn)
+                        actualSymbol != expectSymbol &&
+                                (expectContainingClass != null && expectSymbol.visibility != Visibilities.Private /*match non-private fake overrides*/ ||
+                                        expectSymbol.isExpect && expectSymbol.moduleData in transitiveDependsOn)
                     }.groupBy { expectDeclaration ->
                         AbstractExpectActualMatcher.getCallablesMatchingCompatibility(
                             expectDeclaration,
diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt
index b660b92..d6a7a11 100644
--- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt
+++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualChecker.kt
@@ -182,7 +182,9 @@
 
         val actualMembersByName = actualClassSymbol.collectAllMembers(isActualDeclaration = true).groupBy { nameOf(it) }
 
-        outer@ for (expectMember in expectClassSymbol.collectAllMembers(isActualDeclaration = false)) {
+        val expectMembers = expectClassSymbol.collectAllMembers(isActualDeclaration = false)
+            .filterNot { it is CallableSymbolMarker && it.visibility == Visibilities.Private }
+        for (expectMember in expectMembers) {
             val actualMembers = getPossibleActualsByExpectName(expectMember, actualMembersByName)
 
             val matched = matchSingleExpectAgainstPotentialActuals(
diff --git a/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.fir.kt
deleted file mode 100644
index 9b44a5c..0000000
--- a/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.fir.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-// MODULE: m1-common
-// FILE: common.kt
-// ISSUE: KT-68674
-abstract class BaseClass(private val x: String)
-
-expect class ExpectClass : BaseClass {}
-
-// MODULE: m2-jvm()()(m1-common)
-// FILE: jvm.kt
-actual class ExpectClass(val <!ACTUAL_WITHOUT_EXPECT!>x<!>: Int) : BaseClass(x.toString())
diff --git a/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.kt b/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.kt
index c584c33..7278578 100644
--- a/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.kt
+++ b/compiler/testData/diagnostics/tests/multiplatform/privateExpectFakeOverride_incompatibleReturnType.kt
@@ -1,3 +1,4 @@
+// FIR_IDENTICAL
 // MODULE: m1-common
 // FILE: common.kt
 // ISSUE: KT-68674