diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 3964c90a2e5..a19850db5ef 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -23707,6 +23707,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride_transitiveFakeOverrides_incompatible.kt"); } + @Test + @TestMetadata("actualTypealiasForNotExpectClass.kt") + public void testActualTypealiasForNotExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 58c2d2c004f..5d4012b2ecb 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -23707,6 +23707,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride_transitiveFakeOverrides_incompatible.kt"); } + @Test + @TestMetadata("actualTypealiasForNotExpectClass.kt") + public void testActualTypealiasForNotExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java index b23a3284bca..5171b29f0b4 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated.java @@ -68,6 +68,12 @@ public class FirOldFrontendMPPDiagnosticsWithLightTreeTestGenerated extends Abst runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride_transitiveFakeOverrides_incompatible.kt"); } + @Test + @TestMetadata("actualTypealiasForNotExpectClass.kt") + public void testActualTypealiasForNotExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java index 6eb490ba943..6bf64a99c1a 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendMPPDiagnosticsWithPsiTestGenerated.java @@ -68,6 +68,12 @@ public class FirOldFrontendMPPDiagnosticsWithPsiTestGenerated extends AbstractFi runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride_transitiveFakeOverrides_incompatible.kt"); } + @Test + @TestMetadata("actualTypealiasForNotExpectClass.kt") + public void testActualTypealiasForNotExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirExpectActualMatchingContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirExpectActualMatchingContext.kt index ac64514565b..05153878ee1 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirExpectActualMatchingContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirExpectActualMatchingContext.kt @@ -20,13 +20,14 @@ interface FirExpectActualMatchingContext : ExpectActualMatchingContext + val expectScopeSession: ScopeSession override fun RegularClassSymbolMarker.getMembersForExpectClass(name: Name): List> } interface FirExpectActualMatchingContextFactory : FirSessionComponent { fun create( - session: FirSession, - scopeSession: ScopeSession, + actualSession: FirSession, + actualScopeSession: ScopeSession, allowedWritingMemberExpectForActualMapping: Boolean = false, ): FirExpectActualMatchingContext } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatcherTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatcherTransformer.kt index 5a57057cd79..27b488229ac 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatcherTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatcherTransformer.kt @@ -41,11 +41,11 @@ class FirExpectActualMatcherProcessor( */ open class FirExpectActualMatcherTransformer( final override val session: FirSession, - private val scopeSession: ScopeSession, + private val actualScopeSession: ScopeSession, ) : FirAbstractTreeTransformer(FirResolvePhase.EXPECT_ACTUAL_MATCHING) { private val expectActualMatchingContext = session.expectActualMatchingContextFactory.create( - session, scopeSession, + session, actualScopeSession, allowedWritingMemberExpectForActualMapping = true, ) @@ -102,7 +102,6 @@ open class FirExpectActualMatcherTransformer( val expectForActualData = FirExpectActualResolver.findExpectForActual( actualSymbol, session, - scopeSession, expectActualMatchingContext, ) memberDeclaration.expectForActual = expectForActualData diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt index b7e0d1d40ab..944a905f3b2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/mpp/FirExpectActualMatchingContextImpl.kt @@ -40,7 +40,7 @@ import org.jetbrains.kotlin.utils.zipIfSizesAreEqual class FirExpectActualMatchingContextImpl private constructor( private val actualSession: FirSession, - private val scopeSession: ScopeSession, + private val actualScopeSession: ScopeSession, private val allowedWritingMemberExpectForActualMapping: Boolean, ) : FirExpectActualMatchingContext, TypeSystemContext by actualSession.typeContext { override val shouldCheckAbsenceOfDefaultParamsInActual: Boolean @@ -52,6 +52,11 @@ class FirExpectActualMatchingContextImpl private constructor( override val allowTransitiveSupertypesActualization: Boolean get() = true + override val expectScopeSession: ScopeSession + // todo KT-63773 design a way for managing scope sessions for common scopes during matching. + // Right now we create a new session every time + get() = ScopeSession() + private fun DeclarationSymbolMarker.asSymbol(): FirBasedSymbol<*> = this as FirBasedSymbol<*> private fun CallableSymbolMarker.asSymbol(): FirCallableSymbol<*> = this as FirCallableSymbol<*> private fun FunctionSymbolMarker.asSymbol(): FirFunctionSymbol<*> = this as FirFunctionSymbol<*> @@ -170,7 +175,7 @@ class FirExpectActualMatchingContextImpl private constructor( val scope = symbol.defaultType().scope( useSiteSession = session, - scopeSession, + if (isActualDeclaration) actualScopeSession else expectScopeSession, CallableCopyTypeCalculator.DoNothing, requiredMembersPhase = FirResolvePhase.STATUS, ) ?: return emptyList() @@ -196,7 +201,7 @@ class FirExpectActualMatchingContextImpl private constructor( val symbol = asSymbol() val scope = symbol.defaultType().scope( useSiteSession = symbol.moduleData.session, - scopeSession, + expectScopeSession, CallableCopyTypeCalculator.DoNothing, requiredMembersPhase = FirResolvePhase.STATUS, ) ?: return emptyList() @@ -259,7 +264,7 @@ class FirExpectActualMatchingContextImpl private constructor( val session = symbol.moduleData.session val containingClass = symbol.containingClassLookupTag()?.toFirRegularClassSymbol(session) ?: return sequenceOf(symbol) - (sequenceOf(symbol) + symbol.overriddenFunctions(containingClass, session, scopeSession).asSequence()) + (sequenceOf(symbol) + symbol.overriddenFunctions(containingClass, session, actualScopeSession).asSequence()) // Tests work even if you don't filter out fake-overrides. Filtering fake-overrides is needed because // the returned descriptors are compared by `equals`. And `equals` for fake-overrides is weird. // I didn't manage to invent a test that would check this condition @@ -354,7 +359,7 @@ class FirExpectActualMatchingContextImpl private constructor( override fun RegularClassSymbolMarker.isNotSamInterface(): Boolean { val type = asSymbol().defaultType() - val isSam = FirSamResolver(actualSession, scopeSession).isSamType(type) + val isSam = FirSamResolver(actualSession, actualScopeSession).isSamType(type) return !isSam } @@ -613,9 +618,9 @@ class FirExpectActualMatchingContextImpl private constructor( object Factory : FirExpectActualMatchingContextFactory { override fun create( - session: FirSession, scopeSession: ScopeSession, + actualSession: FirSession, actualScopeSession: ScopeSession, allowedWritingMemberExpectForActualMapping: Boolean, ): FirExpectActualMatchingContextImpl = - FirExpectActualMatchingContextImpl(session, scopeSession, allowedWritingMemberExpectForActualMapping) + FirExpectActualMatchingContextImpl(actualSession, actualScopeSession, allowedWritingMemberExpectForActualMapping) } } 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 3634b0b5333..b285c96df62 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 @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirExpectActualMatchingContext import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.ExpectForActualMatchingData import org.jetbrains.kotlin.fir.declarations.fullyExpandedClass +import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.providers.dependenciesSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider @@ -26,7 +27,6 @@ object FirExpectActualResolver { fun findExpectForActual( actualSymbol: FirBasedSymbol<*>, useSiteSession: FirSession, - scopeSession: ScopeSession, context: FirExpectActualMatchingContext, ): ExpectForActualMatchingData { with(context) { @@ -45,7 +45,7 @@ object FirExpectActualResolver { ?.fullyExpandedClass(useSiteSession) when (actualSymbol) { - is FirConstructorSymbol -> expectContainingClass?.getConstructors(scopeSession) + is FirConstructorSymbol -> expectContainingClass?.getConstructors(expectScopeSession) else -> expectContainingClass?.getMembersForExpectClass(actualSymbol.name) }.orEmpty() } @@ -59,7 +59,7 @@ object FirExpectActualResolver { } } candidates.filter { expectSymbol -> - actualSymbol != expectSymbol && expectSymbol.isExpect + actualSymbol != expectSymbol && (expectContainingClass != null /*match fake overrides*/ || expectSymbol.isExpect) }.groupBy { expectDeclaration -> AbstractExpectActualMatcher.getCallablesMatchingCompatibility( expectDeclaration, @@ -79,8 +79,12 @@ object FirExpectActualResolver { is FirClassLikeSymbol<*> -> { val expectClassSymbol = useSiteSession.dependenciesSymbolProvider .getClassLikeSymbolByClassId(actualSymbol.classId) as? FirRegularClassSymbol ?: return emptyMap() - val compatibility = AbstractExpectActualMatcher.matchClassifiers(expectClassSymbol, actualSymbol, context) - mapOf(compatibility to listOf(expectClassSymbol)) + if (expectClassSymbol.isExpect) { + val compatibility = AbstractExpectActualMatcher.matchClassifiers(expectClassSymbol, actualSymbol, context) + mapOf(compatibility to listOf(expectClassSymbol)) + } else { + emptyMap() + } } else -> emptyMap() } 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 e56a2aff79d..9bb15e1a30d 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 @@ -217,8 +217,6 @@ object AbstractExpectActualChecker { val actualMembersByName = actualClassSymbol.collectAllMembers(isActualDeclaration = true).groupBy { it.name } outer@ for (expectMember in expectClassSymbol.collectAllMembers(isActualDeclaration = false)) { - if (expectMember is CallableSymbolMarker && expectMember.shouldSkipMatching(expectClassSymbol)) continue - val actualMembers = getPossibleActualsByExpectName(expectMember, actualMembersByName) val matched = AbstractExpectActualMatcher.matchSingleExpectAgainstPotentialActuals( diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualMatcher.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualMatcher.kt index 5361fd1bdec..3a023156c47 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualMatcher.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualMatcher.kt @@ -89,8 +89,6 @@ object AbstractExpectActualMatcher { val actualMembersByName = actualClassSymbol.collectAllMembers(isActualDeclaration = true).groupBy { it.name } outer@ for (expectMember in expectClassSymbol.collectAllMembers(isActualDeclaration = false)) { - if (expectMember is CallableSymbolMarker && expectMember.shouldSkipMatching(expectClassSymbol)) continue - val actualMembers = getPossibleActualsByExpectName(expectMember, actualMembersByName) matchSingleExpectAgainstPotentialActuals( diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.fir.kt index 9f01c201355..da3763e56d9 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.fir.kt @@ -10,6 +10,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(t: R) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.ll.kt index d8a7c2b9c8b..52a42d06611 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeFunctionTypeParameterNamesInOverride.ll.kt @@ -10,6 +10,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(t: R) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.fir.kt index 7453bd4f69e..826a7c01909 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.fir.kt @@ -13,7 +13,7 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override lateinit var red1: String override var red2: String = "" override lateinit var green: String diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.ll.kt index f954695bfba..f86d922c82d 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeLateinitInOverride.ll.kt @@ -13,7 +13,7 @@ expect open class Foo : Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override lateinit var red1: String override var red2: String = "" override lateinit var green: String diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.fir.kt index 1224bfa64d6..2a8d316d932 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.fir.kt @@ -10,6 +10,6 @@ interface Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base { +actual open class Foo : Base { final override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.ll.kt index fecad3d145e..6d2f7135e69 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToFinalInOverride.ll.kt @@ -10,6 +10,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base { +actual open class Foo : Base { final override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.fir.kt index 378a3e3a5b2..bb2ff8f7337 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.fir.kt @@ -12,6 +12,6 @@ interface Base { // Mismatched scope must be reported here. But it's false negative checker in K1. // For some reason, K1 says that modality of `exect_Foo.foo` is `abstract`. // https://youtrack.jetbrains.com/issue/KT-59739 -actual open class Foo : Base { +actual open class Foo : Base { override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.ll.kt index dca99f75dfc..ca65742a582 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromAbstractToOpenInOverride.ll.kt @@ -12,6 +12,6 @@ expect open class Foo() : Base // Mismatched scope must be reported here. But it's false negative checker in K1. // For some reason, K1 says that modality of `exect_Foo.foo` is `abstract`. // https://youtrack.jetbrains.com/issue/KT-59739 -actual open class Foo : Base { +actual open class Foo : Base { override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.fir.kt index 59275dc00c5..e2d521b0c69 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.fir.kt @@ -9,6 +9,6 @@ interface Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual abstract class Foo : Base { +actual abstract class Foo : Base { abstract override fun foo() } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.ll.kt index 7288c9e75d1..80c2a8b8943 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToAbstractInOverride.ll.kt @@ -9,6 +9,6 @@ expect abstract class Foo() : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual abstract class Foo : Base { +actual abstract class Foo : Base { abstract override fun foo() } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.fir.kt index 5fcc8f7e000..37a86b6915b 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.fir.kt @@ -10,6 +10,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { final override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.ll.kt index 0f120ff95ee..5397ccf17b6 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityFromOpenToFinalInOverride.ll.kt @@ -10,6 +10,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { final override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.fir.kt index afe583b5f93..f024f365461 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.fir.kt @@ -10,6 +10,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { final override fun foo(t: String) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.ll.kt index 97095ce2495..12871c31a97 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfSubstitutedFakeOverride.ll.kt @@ -10,6 +10,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { final override fun foo(t: String) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.fir.kt index 64aacecc60f..2de117e7d9d 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.fir.kt @@ -6,6 +6,6 @@ // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo { +actual open class Foo { final override fun toString() = "Foo" } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.ll.kt index a6db51f1d91..a21c39af526 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeModalityOfToStringInOverride.ll.kt @@ -6,6 +6,6 @@ expect open class Foo // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo { +actual open class Foo { final override fun toString() = "Foo" } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.fir.kt index d0e00538386..365711bc9fa 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.fir.kt @@ -14,7 +14,7 @@ expect open class Foo3 { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo1 : Base() { +actual open class Foo1 : Base() { override fun foo(paramNameChanged: Int) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.ll.kt index 285eec862fb..2ac82ecce9e 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeParameterNameInOverride.ll.kt @@ -14,7 +14,7 @@ expect open class Foo3 { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo1 : Base() { +actual open class Foo1 : Base() { override fun foo(paramNameChanged: Int) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.fir.kt index 800468af7a7..4a3cca52bb1 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.fir.kt @@ -11,6 +11,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(bar: IntArray) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.ll.kt index b4da96e78a6..ee968020e0a 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVarargModifierInOverride.ll.kt @@ -11,6 +11,6 @@ expect open class Foo : Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(bar: IntArray) {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.fir.kt index eb4bdb07bff..bcf47c17ed9 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.fir.kt @@ -10,6 +10,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { public override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.ll.kt index 42fb0aa213f..276ced5628b 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/changeVisibilityInOverride.ll.kt @@ -10,6 +10,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { public override fun foo() {} } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.fir.kt index 1004c75aaf4..19f3153d1d8 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.fir.kt @@ -12,6 +12,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(): String = "" } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.ll.kt index 244520ea4f8..6f974698eb8 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantFunctionOverride.ll.kt @@ -12,6 +12,6 @@ expect open class Foo : Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(): String = "" } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.fir.kt index df9db6e8949..64a95d47c7f 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.fir.kt @@ -13,6 +13,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(): T = null!! } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.ll.kt index b0cf8421b07..1d940d71c8c 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenericUpperBound.ll.kt @@ -13,6 +13,6 @@ expect open class Foo : Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(): T = null!! } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.fir.kt index 9259c7d1a6c..d5e95aae690 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.fir.kt @@ -11,6 +11,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(): F = null!! } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.ll.kt index b2541f52358..804a46fcd56 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantOverrideGenerics.ll.kt @@ -11,6 +11,6 @@ expect open class Foo : Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override fun foo(): F = null!! } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.fir.kt index 1c5a1354042..6a8fb817d5d 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.fir.kt @@ -11,6 +11,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override val foo: String = "" } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.ll.kt index 5f350ed7859..3757539525f 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/covariantPropertyOverride.ll.kt @@ -11,6 +11,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override val foo: String = "" } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.fir.kt index 261b9aadbaf..cfa7ded6e31 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.fir.kt @@ -14,7 +14,7 @@ expect open class Base { actual typealias Base = BaseJava -actual open class Foo : Base() { +actual open class Foo : Base() { // K1 doesn't report a diagnostic here because when it compares scopes it sees flexible type // K2 will likely report a diagnostic here // I don't think we can fix this 'K1 green -> K2 red'. It must be a rare case anyway. diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.ll.kt index 2864d178ad6..51f48c3301b 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/flexibleTypesMatching.ll.kt @@ -14,7 +14,7 @@ expect open class Foo : Base { actual typealias Base = BaseJava -actual open class Foo : Base() { +actual open class Foo : Base() { // K1 doesn't report a diagnostic here because when it compares scopes it sees flexible type // K2 will likely report a diagnostic here // I don't think we can fix this 'K1 green -> K2 red'. It must be a rare case anyway. diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.fir.kt index acab3021d6d..3cc168f5573 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.fir.kt @@ -10,6 +10,6 @@ open class Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override var foo: Int = 1 } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.ll.kt index f49dbac0ac9..2aceb5f6914 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/propertyKindOverride.ll.kt @@ -10,6 +10,6 @@ expect open class Foo : Base // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { override var foo: Int = 1 } diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.fir.kt index 42f73030563..da6eca7a2eb 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.fir.kt @@ -16,7 +16,7 @@ open class Base() { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { actual fun existingMethod() {} actual val existingParam: Int = 904 diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.ll.kt index 62f36af0da1..34d48a99aa3 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/actualClassifierMustHasTheSameMembersAsNonFinalExpectClassifierChecker/severalMismatches.ll.kt @@ -16,7 +16,7 @@ expect open class Foo : Base { // MODULE: m2-jvm()()(m1-common) // FILE: jvm.kt -actual open class Foo : Base() { +actual open class Foo : Base() { actual fun existingMethod() {} actual val existingParam: Int = 904 diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.fir.kt new file mode 100644 index 00000000000..f0a0bff70d6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.fir.kt @@ -0,0 +1,29 @@ +// MODULE: m1-common +// FILE: common.kt + +open class A { + open fun foo(): String = "Fail" +} +expect class C1() : A +expect class C2() : A + +// MODULE: m2-jvm()()(m1-common) +// FILE: A_J.java +public class A_J {} + +// FILE: B_J.java +public class B_J extends A_J { + public String foo() { return "O"; } +} + +// FILE: C2_J.java +public class C2_J extends B_J { + public String foo() { return "K"; } +} + +// FILE: main.kt +actual typealias A = A_J + +// Indirect subtyping is allowed in K2 KT-59356 +actual class C1 : B_J() +actual typealias C2 = C2_J diff --git a/compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt b/compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt new file mode 100644 index 00000000000..4b66483d291 --- /dev/null +++ b/compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt @@ -0,0 +1,29 @@ +// MODULE: m1-common +// FILE: common.kt + +open class A { + open fun foo(): String = "Fail" +} +expect class C1() : A +expect class C2() : A + +// MODULE: m2-jvm()()(m1-common) +// FILE: A_J.java +public class A_J {} + +// FILE: B_J.java +public class B_J extends A_J { + public String foo() { return "O"; } +} + +// FILE: C2_J.java +public class C2_J extends B_J { + public String foo() { return "K"; } +} + +// FILE: main.kt +actual typealias A = A_J + +// Indirect subtyping is allowed in K2 KT-59356 +actual class C1 : B_J() +actual typealias C2 = C2_J diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.fir.kt index 2a725f1ac29..b0f076249c9 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.fir.kt @@ -2,6 +2,6 @@ expect interface Base // MODULE: m1-jvm()()(m1-common) -actual interface Base { +actual interface Base { override fun equals(other: Any?): Boolean } diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.ll.kt index edc9b346347..2ec7ceac1b7 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/equalsOverrideInActualInterface.ll.kt @@ -2,6 +2,6 @@ expect interface Base // MODULE: m1-jvm()()(m1-common) -actual interface Base { +actual interface Base { override fun equals(other: Any?): Boolean } diff --git a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt index 7c1b21fe30a..51a4179d4f1 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.fir.kt @@ -12,4 +12,4 @@ import java.util.AbstractMap -public actual abstract class AbstractMutableMap() : MutableMap, AbstractMap() +public actual abstract class AbstractMutableMap() : MutableMap, AbstractMap() diff --git a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.ll.kt index b2c3ad70bd9..3a83499727c 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/implicitActualFakeOverride_AbstractMap.ll.kt @@ -12,4 +12,4 @@ public expect abstract class AbstractMutableMap : MutableMap { import java.util.AbstractMap -public actual abstract class AbstractMutableMap() : MutableMap, AbstractMap() +public actual abstract class AbstractMutableMap() : MutableMap, AbstractMap() diff --git a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.fir.kt index bbee0f63844..32edc397c50 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.fir.kt @@ -9,5 +9,5 @@ typealias MyNothing = Nothing -actual typealias E01 = Nothing -actual typealias E02 = MyNothing +actual typealias E01 = Nothing +actual typealias E02 = MyNothing diff --git a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.ll.kt index 3d99a97d13d..c2d8cc02f06 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing.ll.kt @@ -9,5 +9,5 @@ expect class E02 typealias MyNothing = Nothing -actual typealias E01 = Nothing -actual typealias E02 = MyNothing +actual typealias E01 = Nothing +actual typealias E02 = MyNothing diff --git a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.fir.kt index 80fdf22e99d..e64b3224fba 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.fir.kt @@ -10,5 +10,5 @@ typealias MyNothing = Nothing -actual typealias E01 = Nothing -actual typealias E02 = MyNothing +actual typealias E01 = Nothing +actual typealias E02 = MyNothing diff --git a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.ll.kt b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.ll.kt index 501cf8ae712..0372c233af3 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.ll.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/typealias/actualTypealiasToNothing_oldLanguageVersion.ll.kt @@ -10,5 +10,5 @@ expect class E02 typealias MyNothing = Nothing -actual typealias E01 = Nothing -actual typealias E02 = MyNothing +actual typealias E01 = Nothing +actual typealias E02 = MyNothing diff --git a/compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/output.txt b/compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/output.txt index 83f63c3f35d..65f793901f9 100644 --- a/compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/output.txt +++ b/compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/output.txt @@ -8,6 +8,26 @@ Output: compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/jvm.kt:3:1: error: right-hand side of actual type alias cannot be of type kotlin.Nothing actual typealias E01 = Nothing ^ +compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/jvm.kt:3:18: error: 'actual typealias E01 = Nothing' has no corresponding members for expected class members: + + fun equals(other: Any?): Boolean + + fun hashCode(): Int + + fun toString(): String + +actual typealias E01 = Nothing + ^ compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/jvm.kt:4:1: error: right-hand side of actual type alias should be a class, not another type alias. actual typealias E02 = MyNothing ^ +compiler/testData/multiplatform/implTypeAlias/actualTypealiasToNothing/jvm.kt:4:18: error: 'actual typealias E02 = MyNothing' has no corresponding members for expected class members: + + fun equals(other: Any?): Boolean + + fun hashCode(): Int + + fun toString(): String + +actual typealias E02 = MyNothing + ^ diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 639d2cad13f..eecbc14dfc2 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -23707,6 +23707,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/multiplatform/actualFakeOverride_transitiveFakeOverrides_incompatible.kt"); } + @Test + @TestMetadata("actualTypealiasForNotExpectClass.kt") + public void testActualTypealiasForNotExpectClass() throws Exception { + runTest("compiler/testData/diagnostics/tests/multiplatform/actualTypealiasForNotExpectClass.kt"); + } + @Test @TestMetadata("actualTypealiasToSpecialAnnotation.kt") public void testActualTypealiasToSpecialAnnotation() throws Exception {