diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 5d7eb14e86f..515c2843a54 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -33711,6 +33711,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index a3f313c3234..acdfde0c095 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -33711,6 +33711,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); 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 101e246d80d..ac64514565b 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirExpectActualMatchingContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirExpectActualMatchingContext.kt @@ -24,7 +24,11 @@ interface FirExpectActualMatchingContext : ExpectActualMatchingContext(FirResolvePhase.EXPECT_ACTUAL_MATCHING) { - private val expectActualMatchingContext = session.expectActualMatchingContextFactory.create(session, scopeSession) + private val expectActualMatchingContext = session.expectActualMatchingContextFactory.create( + session, scopeSession, + allowedWritingMemberExpectForActualMapping = true, + ) // --------------------------- classifiers --------------------------- override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Nothing?): FirStatement { 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 ec23873d520..fd839e972ab 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 @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirConstExpression import org.jetbrains.kotlin.fir.expressions.FirExpression -import org.jetbrains.kotlin.fir.declarations.utils.isOverride import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.scopes.* @@ -28,6 +27,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualCollectionArgumentsCompatibilityCheckStrategy import org.jetbrains.kotlin.resolve.calls.mpp.ExpectActualMatchingContext.AnnotationCallInfo import org.jetbrains.kotlin.resolve.checkers.OptInNames +import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.TypeCheckerState import org.jetbrains.kotlin.types.Variance @@ -40,7 +40,8 @@ import org.jetbrains.kotlin.utils.addToStdlib.castAll class FirExpectActualMatchingContextImpl private constructor( private val actualSession: FirSession, - private val scopeSession: ScopeSession + private val scopeSession: ScopeSession, + private val allowedWritingMemberExpectForActualMapping: Boolean, ) : FirExpectActualMatchingContext, TypeSystemContext by actualSession.typeContext { override val shouldCheckReturnTypesOfCallables: Boolean get() = false @@ -396,8 +397,72 @@ class FirExpectActualMatchingContextImpl private constructor( return symbol.source == null && symbol.origin !is FirDeclarationOrigin.Plugin } + override fun onMatchedMembers( + expectSymbol: DeclarationSymbolMarker, + actualSymbol: DeclarationSymbolMarker, + containingExpectClassSymbol: RegularClassSymbolMarker?, + containingActualClassSymbol: RegularClassSymbolMarker? + ) { + if (containingActualClassSymbol == null || containingExpectClassSymbol == null) return + + containingActualClassSymbol.asSymbol().addMemberExpectForActualMapping( + expectSymbol.asSymbol(), + actualSymbol.asSymbol(), + containingExpectClassSymbol.asSymbol(), + ExpectActualCompatibility.Compatible + ) + } + + override fun onMismatchedMembersFromClassScope( + expectSymbol: DeclarationSymbolMarker, + actualSymbolsByIncompatibility: Map, List>, + containingExpectClassSymbol: RegularClassSymbolMarker?, + containingActualClassSymbol: RegularClassSymbolMarker? + ) { + if (containingExpectClassSymbol == null || containingActualClassSymbol == null) return + + for ((incompatibility, actualSymbols) in actualSymbolsByIncompatibility.entries) { + for (actualSymbol in actualSymbols) { + containingActualClassSymbol.asSymbol().addMemberExpectForActualMapping( + expectSymbol.asSymbol(), + actualSymbol.asSymbol(), + containingExpectClassSymbol.asSymbol(), + incompatibility, + ) + } + } + } + + private fun FirRegularClassSymbol.addMemberExpectForActualMapping( + expectMember: FirBasedSymbol<*>, actualMember: FirBasedSymbol<*>, + expectClassSymbol: FirRegularClassSymbol, compatibility: ExpectActualCompatibility<*>, + ) { + check(allowedWritingMemberExpectForActualMapping) { "Writing memberExpectForActual is not allowed in this context" } + val fir = fir + val expectForActualMap = fir.memberExpectForActual ?: mutableMapOf() + fir.memberExpectForActual = expectForActualMap + + val expectToCompatibilityMap = expectForActualMap.asMutableMap() + .computeIfAbsent(actualMember to expectClassSymbol) { mutableMapOf() } + + /* + Don't report when value is overwritten, because it's the case for actual inner classes: + actual class A { + actual class B { + actual fun foo() {} <-- twice checked (from A and B) and added to mapping + } + } + */ + expectToCompatibilityMap.asMutableMap()[expectMember] = compatibility + } + + private fun Map.asMutableMap(): MutableMap = this as MutableMap + object Factory : FirExpectActualMatchingContextFactory { - override fun create(session: FirSession, scopeSession: ScopeSession): FirExpectActualMatchingContextImpl = - FirExpectActualMatchingContextImpl(session, scopeSession) + override fun create( + session: FirSession, scopeSession: ScopeSession, + allowedWritingMemberExpectForActualMapping: Boolean, + ): FirExpectActualMatchingContextImpl = + FirExpectActualMatchingContextImpl(session, scopeSession, allowedWritingMemberExpectForActualMapping) } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt index b3e2d0f22ac..cceaeaf3925 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/ExpectActualAttributes.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility @@ -31,3 +32,13 @@ val FirBasedSymbol<*>.expectForActual: ExpectForActualData? return fir.expectForActual } + +private object MemberExpectForActualAttributeKey : FirDeclarationDataKey() + +// Expect class in the key is needed, because class may correspond to two expects +// in case when two `actual typealias` point to the same class. +typealias MemberExpectForActualData = + Map, /* expect class */ FirRegularClassSymbol>, + Map, ExpectActualCompatibility<*>>> + +var FirRegularClass.memberExpectForActual: MemberExpectForActualData? by FirDeclarationDataRegistry.data(MemberExpectForActualAttributeKey) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt index f1457c88a3a..a063e0eb630 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/ExpectActualCollector.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.util.classIdOrFail import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.mpp.DeclarationSymbolMarker +import org.jetbrains.kotlin.mpp.RegularClassSymbolMarker import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualCompatibilityChecker @@ -218,6 +219,8 @@ private class ExpectActualLinkCollector( override fun onMismatchedMembersFromClassScope( expectSymbol: DeclarationSymbolMarker, actualSymbolsByIncompatibility: Map, List>, + containingExpectClassSymbol: RegularClassSymbolMarker?, + containingActualClassSymbol: RegularClassSymbolMarker?, ) { require(expectSymbol is IrSymbol) if (actualSymbolsByIncompatibility.isEmpty() && !expectSymbol.owner.containsOptionalExpectation()) { diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrExpectActualMatchingContext.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrExpectActualMatchingContext.kt index d14313fdeaa..cd6824910e7 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrExpectActualMatchingContext.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/IrExpectActualMatchingContext.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.resolve.checkers.OptInNames import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.TypeCheckerState import org.jetbrains.kotlin.types.Variance -import org.jetbrains.kotlin.types.model.AnnotationMarker import org.jetbrains.kotlin.types.model.KotlinTypeMarker import org.jetbrains.kotlin.types.model.TypeSubstitutorMarker import org.jetbrains.kotlin.types.model.TypeSystemContext @@ -440,7 +439,12 @@ internal abstract class IrExpectActualMatchingContext( } } - override fun onMatchedMembers(expectSymbol: DeclarationSymbolMarker, actualSymbol: DeclarationSymbolMarker) { + override fun onMatchedMembers( + expectSymbol: DeclarationSymbolMarker, + actualSymbol: DeclarationSymbolMarker, + containingExpectClassSymbol: RegularClassSymbolMarker?, + containingActualClassSymbol: RegularClassSymbolMarker?, + ) { require(expectSymbol is IrSymbol) require(actualSymbol is IrSymbol) when (expectSymbol) { diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt index 3040ced97a4..16af103b58c 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/AbstractExpectActualCompatibilityChecker.kt @@ -264,7 +264,7 @@ object AbstractExpectActualCompatibilityChecker { for ((actualMember, compatibility) in mapping) { when (compatibility) { ExpectActualCompatibility.Compatible -> { - onMatchedMembers(expectMember, actualMember) + onMatchedMembers(expectMember, actualMember, expectClassSymbol, actualClassSymbol) return } @@ -273,7 +273,7 @@ object AbstractExpectActualCompatibilityChecker { } unfulfilled?.add(expectMember to incompatibilityMap) - onMismatchedMembersFromClassScope(expectMember, incompatibilityMap) + onMismatchedMembersFromClassScope(expectMember, incompatibilityMap, expectClassSymbol, actualClassSymbol) } context(ExpectActualMatchingContext<*>) diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt index 9935d2e57eb..912ee4fb77f 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/mpp/ExpectActualMatchingContext.kt @@ -159,11 +159,18 @@ interface ExpectActualMatchingContext : TypeSystemC val CallableSymbolMarker.hasStableParameterNames: Boolean - fun onMatchedMembers(expectSymbol: DeclarationSymbolMarker, actualSymbol: DeclarationSymbolMarker) {} + fun onMatchedMembers( + expectSymbol: DeclarationSymbolMarker, + actualSymbol: DeclarationSymbolMarker, + containingExpectClassSymbol: RegularClassSymbolMarker?, + containingActualClassSymbol: RegularClassSymbolMarker?, + ) {} fun onMismatchedMembersFromClassScope( expectSymbol: DeclarationSymbolMarker, - actualSymbolsByIncompatibility: Map, List> + actualSymbolsByIncompatibility: Map, List>, + containingExpectClassSymbol: RegularClassSymbolMarker?, + containingActualClassSymbol: RegularClassSymbolMarker?, ) {} val DeclarationSymbolMarker.annotations: List diff --git a/compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt b/compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt new file mode 100644 index 00000000000..f36acd5819e --- /dev/null +++ b/compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt @@ -0,0 +1,19 @@ +// LANGUAGE: +MultiPlatformProjects +// IGNORE_BACKEND_K1: ANY +// MODULE: common +// FILE: common.kt +expect class A { + class B { + fun foo() + } +} + +// MODULE: main()()(common) +// FILE: test.kt +actual class A { + actual class B { + actual fun foo() {} + } +} + +fun box() = "OK" // check no errors are thrown during building FIR member mapping diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index c2663adbbe1..5081ed7f547 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -32067,6 +32067,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index d92aad5c114..65d01bd95f3 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -33711,6 +33711,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 41c84bb5a36..2355863d9d0 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -33711,6 +33711,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 7b298e08ca0..f030786b65b 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -28729,6 +28729,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); } + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index f4b8c16223c..501c60fb4da 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -23541,6 +23541,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java index dc1f691041d..a1aa6258af1 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java @@ -23541,6 +23541,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index 0588136c159..fa6f64b5ac5 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -23541,6 +23541,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index 7af1fea18cd..dc23fcd4fb6 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -23541,6 +23541,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java index e89a749d49c..de6b95d0321 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java @@ -26507,6 +26507,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe @FirPipeline() @UseExtTestCaseGroupProvider() public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java index ec52965c4b4..2f8ec40925f 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java @@ -27121,6 +27121,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB @UsePartialLinkage(mode = Mode.DISABLED) @Tag("no-partial-linkage-may-be-skipped") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 9090ec1fed9..76d5cd2f57c 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -26201,6 +26201,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest @UseExtTestCaseGroupProvider() @DisabledTestsIfProperty(sourceLocations = { "compiler/testData/codegen/box/coroutines/featureIntersection/defaultExpect.kt", "compiler/testData/codegen/box/multiplatform/defaultArguments/*.kt", "compiler/testData/codegen/box/multiplatform/migratedOldTests/*.kt", "compiler/testData/codegen/boxInline/multiplatform/defaultArguments/receiversAndParametersInLambda.kt" }, property = ClassLevelProperty.TEST_MODE, propertyValue = "ONE_STAGE_MULTI_MODULE") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java index 289788a3383..aaf337cbe73 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java @@ -26508,6 +26508,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT @UsePartialLinkage(mode = Mode.DISABLED) @Tag("no-partial-linkage-may-be-skipped") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java index b7c8f51f85b..e53f7877a67 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java @@ -23295,6 +23295,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true); diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java index 01c3f352f57..3450c1e324a 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java @@ -23295,6 +23295,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest @TestMetadata("compiler/testData/codegen/box/multiplatform/k2") @TestDataPath("$PROJECT_ROOT") public class K2 { + @Test + @TestMetadata("actualInnerClassesFirMemberMapping.kt") + public void testActualInnerClassesFirMemberMapping() throws Exception { + runTest("compiler/testData/codegen/box/multiplatform/k2/actualInnerClassesFirMemberMapping.kt"); + } + @Test public void testAllFilesPresentInK2() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/multiplatform/k2"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);