diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated.java index 84592adff8e..559e7a3e8ad 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated.java @@ -575,6 +575,22 @@ public class FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated extends AbstractF } } + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses") + @TestDataPath("$PROJECT_ROOT") + public class InlineClasses { + @Test + public void testAllFilesPresentInInlineClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("declarationClash.kt") + public void testDeclarationClash() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.kt"); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames") @TestDataPath("$PROJECT_ROOT") @@ -824,6 +840,22 @@ public class FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated extends AbstractF runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_old.kt"); } } + + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses") + @TestDataPath("$PROJECT_ROOT") + public class ValueClasses { + @Test + public void testAllFilesPresentInValueClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("declarationClash.kt") + public void testDeclarationClash() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.kt"); + } + } } @Nested 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 ba56cbac2fe..0ac97b7bffe 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 @@ -22991,6 +22991,18 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { @@ -43603,6 +43615,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("simpleConstructorWithInlineClassParameter.kt") public void testSimpleConstructorWithInlineClassParameter() throws Exception { @@ -43925,6 +43943,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/reflection/call/valueClasses/properties.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("suspendFunction.kt") public void testSuspendFunction() throws Exception { @@ -52181,6 +52205,18 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/valueClasses/mutableSharedMfvcVar.kt"); } + @Test + @TestMetadata("overrideFunctionWithDefaultParameter.kt") + public void testOverrideFunctionWithDefaultParameter() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("overrideFunctionWithDefaultParameterGeneric.kt") + public void testOverrideFunctionWithDefaultParameterGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("overrides.kt") public void testOverrides() throws Exception { @@ -52205,6 +52241,30 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/valueClasses/regularClassSecondaryConstructorWithMfvc.kt"); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVararg.kt") + public void testSecondaryConstructorWithVararg() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVarargGeneric.kt") + public void testSecondaryConstructorWithVarargGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorsWithBody.kt") public void testSecondaryConstructorsWithBody() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java index bc008de9b2b..b7b3d5d4c2a 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBytecodeListingTestGenerated.java @@ -2571,5 +2571,11 @@ public class FirLightTreeBytecodeListingTestGenerated extends AbstractFirLightTr public void testAnnotations() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/valueClasses/annotations.kt"); } + + @Test + @TestMetadata("nullabilityAnnotationsOnInlineClassMembers.kt") + public void testNullabilityAnnotationsOnInlineClassMembers() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.kt"); + } } } 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 fd5117b9a8e..a41c78e8293 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 @@ -22991,6 +22991,18 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { @@ -43603,6 +43615,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("simpleConstructorWithInlineClassParameter.kt") public void testSimpleConstructorWithInlineClassParameter() throws Exception { @@ -43925,6 +43943,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/reflection/call/valueClasses/properties.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("suspendFunction.kt") public void testSuspendFunction() throws Exception { @@ -52181,6 +52205,18 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/valueClasses/mutableSharedMfvcVar.kt"); } + @Test + @TestMetadata("overrideFunctionWithDefaultParameter.kt") + public void testOverrideFunctionWithDefaultParameter() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("overrideFunctionWithDefaultParameterGeneric.kt") + public void testOverrideFunctionWithDefaultParameterGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("overrides.kt") public void testOverrides() throws Exception { @@ -52205,6 +52241,30 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/valueClasses/regularClassSecondaryConstructorWithMfvc.kt"); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVararg.kt") + public void testSecondaryConstructorWithVararg() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVarargGeneric.kt") + public void testSecondaryConstructorWithVarargGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorsWithBody.kt") public void testSecondaryConstructorsWithBody() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java index b33774a0c38..5204ba6ee10 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBytecodeListingTestGenerated.java @@ -2571,5 +2571,11 @@ public class FirPsiBytecodeListingTestGenerated extends AbstractFirPsiBytecodeLi public void testAnnotations() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/valueClasses/annotations.kt"); } + + @Test + @TestMetadata("nullabilityAnnotationsOnInlineClassMembers.kt") + public void testNullabilityAnnotationsOnInlineClassMembers() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.kt"); + } } } diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt index caf15c4b8f7..382fb44a840 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt @@ -126,7 +126,7 @@ abstract class AnnotationCodegen( if (declaration is IrValueParameter) { val parent = declaration.parent as IrDeclaration if (isInvisibleForNullabilityAnalysis(parent)) return - if (isMovedReceiverParameterOfStaticInlineClassReplacement(declaration, parent)) return + if (isMovedReceiverParameterOfStaticValueClassReplacement(declaration, parent)) return } // No need to annotate annotation methods since they're always non-null @@ -165,8 +165,8 @@ abstract class AnnotationCodegen( generateAnnotationIfNotPresent(annotationDescriptorsAlreadyPresent, annotationClass) } - private fun isMovedReceiverParameterOfStaticInlineClassReplacement(parameter: IrValueParameter, parent: IrDeclaration): Boolean = - parent.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT && + private fun isMovedReceiverParameterOfStaticValueClassReplacement(parameter: IrValueParameter, parent: IrDeclaration): Boolean = + (parent.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT || parent.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT) && parameter.origin == IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER private fun generateAnnotationIfNotPresent(annotationDescriptorsAlreadyPresent: MutableSet, annotationClass: Class<*>) { diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultArgumentStubGenerator.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultArgumentStubGenerator.kt index 48d838ab27f..23d0f15674f 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultArgumentStubGenerator.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultArgumentStubGenerator.kt @@ -12,8 +12,10 @@ import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin import org.jetbrains.kotlin.backend.jvm.JvmLoweredStatementOrigin import org.jetbrains.kotlin.backend.jvm.ir.getJvmVisibilityOfDefaultArgumentStub import org.jetbrains.kotlin.ir.builders.* -import org.jetbrains.kotlin.ir.declarations.* -import org.jetbrains.kotlin.ir.expressions.IrExpression +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.declarations.IrConstructor +import org.jetbrains.kotlin.ir.declarations.IrFunction +import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.util.isFinalClass import org.jetbrains.kotlin.ir.util.isTopLevelDeclaration @@ -21,7 +23,9 @@ class JvmDefaultArgumentStubGenerator(override val context: JvmBackendContext) : override fun defaultArgumentStubVisibility(function: IrFunction) = function.getJvmVisibilityOfDefaultArgumentStub() override fun useConstructorMarker(function: IrFunction): Boolean = - function is IrConstructor || function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR + function is IrConstructor || + function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR || + function.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR override fun IrBlockBodyBuilder.generateSuperCallHandlerCheckIfNeeded( irFunction: IrFunction, diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultParameterInjector.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultParameterInjector.kt index 1ed09f758bd..948d2916251 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultParameterInjector.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmDefaultParameterInjector.kt @@ -31,8 +31,11 @@ class JvmDefaultParameterInjector(context: JvmBackendContext) : override fun defaultArgumentStubVisibility(function: IrFunction) = function.getJvmVisibilityOfDefaultArgumentStub() override fun useConstructorMarker(function: IrFunction): Boolean = - function is IrConstructor || function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR + function is IrConstructor || + function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR || + function.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR override fun isStatic(function: IrFunction): Boolean = - function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT + function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT || + function.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/mapping/MethodSignatureMapper.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/mapping/MethodSignatureMapper.kt index 09d5ff10977..46ceadf867e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/mapping/MethodSignatureMapper.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/mapping/MethodSignatureMapper.kt @@ -126,6 +126,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext, private val private fun IrSimpleFunction.getInternalFunctionForManglingIfNeeded(): IrSimpleFunction? { if (visibility == DescriptorVisibilities.INTERNAL && origin != JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR && + origin != JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR && origin != JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS && origin != IrDeclarationOrigin.PROPERTY_DELEGATE && !isPublishedApi() @@ -446,7 +447,10 @@ class MethodSignatureMapper(private val context: JvmBackendContext, private val findSuperDeclaration(function, isSuperCall, context.state.jvmDefaultMode) private fun getJvmMethodNameIfSpecial(irFunction: IrSimpleFunction): String? { - if (irFunction.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT) { + if ( + irFunction.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT || + irFunction.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT + ) { return null } diff --git a/compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt new file mode 100644 index 00000000000..be6d3f67c36 --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt @@ -0,0 +1,22 @@ +// LANGUAGE: +MultiPlatformProjects +// TARGET_BACKEND: JVM_IR +// WITH_STDLIB + +// MODULE: common +// TARGET_PLATFORM: Common +// FILE: expect.kt + +expect value class ExpectValue(val x: String) { + constructor(x: Int) +} + +// MODULE: main()()(common) +// TARGET_PLATFORM: JVM +// FILE: actual.kt + +@JvmInline +actual value class ExpectValue actual constructor(actual val x: String) { + actual constructor(x: Int) : this(if (x == 42) "OK" else "Not OK: $x") +} + +fun box() = ExpectValue(42).x diff --git a/compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt new file mode 100644 index 00000000000..d628fcc0856 --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt @@ -0,0 +1,23 @@ +// WITH_STDLIB +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses + +OPTIONAL_JVM_INLINE_ANNOTATION +value class Z(val x: Int) { + public constructor() : this(0) + internal constructor(x: Long, y: Int): this(x.toInt(), y.toInt()) + private constructor(x: Int, y: Int): this(x + y) +} + +fun box(): String { + val z1 = Z(111) + if (z1.x != 111) throw AssertionError() + + val z2 = Z() + if (z2.x != 0) throw AssertionError() + + val z3 = Z(2222L, 100) + if (z3.x != 2322) throw AssertionError() + + return "OK" +} diff --git a/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.kt b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.kt index 76d0d76487f..f5175cf5364 100644 --- a/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.kt +++ b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.kt @@ -9,12 +9,19 @@ val l = mutableListOf() OPTIONAL_JVM_INLINE_ANNOTATION value class VC(val x: Int) { - constructor(xD: Double): this(-xD.toInt()) { + constructor(xD: Double) : this(-xD.toInt()) { l.add(xD) l.add(x) l.add(this) + l.add(xD.let { it - 1.0 }.let(fun(x: Double) = x - 1.0)) + class Inner(val x: Int) { + constructor(x: Long): this(x.toInt()) { + l.add(x) + } + } + Inner(Long.MAX_VALUE) } - + init { l.add(x) l.add(this) @@ -23,8 +30,8 @@ value class VC(val x: Int) { fun box(): String { val vc = VC(1) - require(vc == VC(-1.0)) { "$vc\n${VC(-1.0)}"} - val actual = listOf(1, vc, 1, vc, -1.0, 1, vc) + require(vc == VC(-1.0)) { "$vc\n${VC(-1.0)}" } + val actual = listOf(1, vc, 1, vc, -1.0, 1, vc, -3.0, Long.MAX_VALUE) require(l == actual) { "$l\n$actual" } return "OK" } diff --git a/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.txt b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.txt index c6364b2066e..226ee03a9f2 100644 --- a/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.txt +++ b/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsWithBody.txt @@ -7,11 +7,23 @@ public final class SecondaryConstructorsWithBodyKt { public final static @org.jetbrains.annotations.NotNull method getL(): java.util.List } +@kotlin.Metadata +public final class VC$Inner { + // source: 'secondaryConstructorsWithBody.kt' + enclosing method VC.constructor-impl(D)I + private final field x: int + inner (local) class VC$Inner Inner + public method (p0: int): void + public method (p0: long): void + public final method getX(): int +} + @kotlin.jvm.JvmInline @kotlin.Metadata public final class VC { // source: 'secondaryConstructorsWithBody.kt' private final field x: int + inner (local) class VC$Inner Inner private synthetic method (p0: int): void public synthetic final static method box-impl(p0: int): VC public static method constructor-impl(p0: double): int diff --git a/compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt b/compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt new file mode 100644 index 00000000000..e115bdc3747 --- /dev/null +++ b/compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt @@ -0,0 +1,32 @@ +// WITH_STDLIB +// WITH_REFLECT +// TARGET_BACKEND: JVM_IR +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses + +import kotlin.reflect.KVisibility + +OPTIONAL_JVM_INLINE_ANNOTATION +value class Z(val x: Int) { + public constructor() : this(0) + internal constructor(x: Long, y: Int): this(x.toInt(), y.toInt()) + private constructor(x: Int, y: Int): this(x + y) +} + +fun box(): String { + val z1 = Z(111) + if (z1.x != 111) throw AssertionError() + + val z2 = Z() + if (z2.x != 0) throw AssertionError() + + val z3 = Z(2222L, 100) + if (z3.x != 2322) throw AssertionError() + + val constructors = Z::class.constructors + require(constructors.map { it.visibility!! }.sorted() == listOf(KVisibility.PUBLIC, KVisibility.PUBLIC, KVisibility.INTERNAL, KVisibility.PRIVATE).sorted()) { + constructors.map { it.visibility }.toString() + } + + return "OK" +} diff --git a/compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt b/compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt new file mode 100644 index 00000000000..c3bb3f270cf --- /dev/null +++ b/compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt @@ -0,0 +1,36 @@ +// WITH_STDLIB +// WITH_REFLECT +// LANGUAGE: +ValueClasses +// TARGET_BACKEND: JVM_IR +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses + +import kotlin.reflect.KVisibility + +OPTIONAL_JVM_INLINE_ANNOTATION +value class Z(val x: Int, val y: Int) { + public constructor() : this(0) + internal constructor(x: Long): this(x.toInt()) + private constructor(x: Int): this(x, -x) +} + +fun box(): String { + val z1 = Z(111, 222) + if (z1.x != 111) throw AssertionError() + if (z1.y != 222) throw AssertionError() + + val z2 = Z() + if (z2.x != 0) throw AssertionError() + if (z2.y != 0) throw AssertionError() + + val z3 = Z(2222L) + if (z3.x != 2222) throw AssertionError() + if (z3.y != -2222) throw AssertionError() + + val constructors = Z::class.constructors + require(constructors.map { it.visibility!! }.sorted() == listOf(KVisibility.PUBLIC, KVisibility.PUBLIC, KVisibility.INTERNAL, KVisibility.PRIVATE).sorted()) { + constructors.map { it.visibility }.toString() + } + + return "OK" +} diff --git a/compiler/testData/codegen/box/valueClasses/classFlattening.txt b/compiler/testData/codegen/box/valueClasses/classFlattening.txt index 265ee687138..67790139789 100644 --- a/compiler/testData/codegen/box/valueClasses/classFlattening.txt +++ b/compiler/testData/codegen/box/valueClasses/classFlattening.txt @@ -161,12 +161,12 @@ public final class SimpleMfvc { public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean public static method equals-impl(p0: int, p1: int, p2: java.lang.String, p3: java.lang.Object): boolean public final static method equals-impl0(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, p5: java.lang.String): boolean - public final static @org.jetbrains.annotations.NotNull method getA3-ge5QAg4(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String, p3: int, p4: int, @org.jetbrains.annotations.NotNull p5: java.lang.String): SimpleMfvc - public final static method getA4-impl(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String): int + public final static @org.jetbrains.annotations.NotNull method getA3-ge5QAg4(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, @org.jetbrains.annotations.NotNull p5: java.lang.String): SimpleMfvc + public final static method getA4-impl(p0: int, p1: int, p2: java.lang.String): int public final static @org.jetbrains.annotations.NotNull method getB1-ge5QAg4(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String): SimpleMfvc public final static @org.jetbrains.annotations.NotNull method getB2-ge5QAg4(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String): SimpleMfvc - public final static @org.jetbrains.annotations.NotNull method getB3-ge5QAg4(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String, p3: int, p4: int, @org.jetbrains.annotations.NotNull p5: java.lang.String): SimpleMfvc - public final static @org.jetbrains.annotations.NotNull method getB4-impl(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String): SimpleMfvc + public final static @org.jetbrains.annotations.NotNull method getB3-ge5QAg4(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, @org.jetbrains.annotations.NotNull p5: java.lang.String): SimpleMfvc + public final static @org.jetbrains.annotations.NotNull method getB4-impl(p0: int, p1: int, p2: java.lang.String): SimpleMfvc private final static method getPrivate1-ge5QAg4(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, p5: java.lang.String): SimpleMfvc private final static method getPrivate2-ge5QAg4(p0: int, p1: int, p2: java.lang.String): SimpleMfvc private final static method getPrivate2-ge5QAg4(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, p5: java.lang.String): SimpleMfvc diff --git a/compiler/testData/codegen/box/valueClasses/complex.txt b/compiler/testData/codegen/box/valueClasses/complex.txt index 3366560f69b..f7dd3390532 100644 --- a/compiler/testData/codegen/box/valueClasses/complex.txt +++ b/compiler/testData/codegen/box/valueClasses/complex.txt @@ -191,11 +191,11 @@ public final class E { public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean public static method equals-impl(p0: int, p1: int, p2: java.lang.String, p3: java.lang.Object): boolean public final static method equals-impl0(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, p5: java.lang.String): boolean - public final static @org.jetbrains.annotations.NotNull method getWithNonTrivialSetters-impl(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String): D + public final static @org.jetbrains.annotations.NotNull method getWithNonTrivialSetters-impl(p0: int, p1: int, p2: java.lang.String): D public final @org.jetbrains.annotations.NotNull method getX(): D public method hashCode(): int public static method hashCode-impl(p0: int, p1: int, p2: java.lang.String): int - public final static method setWithNonTrivialSetters-j_b7x2A(p0: int, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.String, p3: int, p4: int, @org.jetbrains.annotations.NotNull p5: java.lang.String): void + public final static method setWithNonTrivialSetters-j_b7x2A(p0: int, p1: int, p2: java.lang.String, p3: int, p4: int, @org.jetbrains.annotations.NotNull p5: java.lang.String): void public @org.jetbrains.annotations.NotNull method toString(): java.lang.String public static method toString-impl(p0: int, p1: int, p2: java.lang.String): java.lang.String public synthetic final method unbox-impl-x(): D @@ -300,9 +300,9 @@ public final class R { public static method equals-impl(p0: int, p1: int, p2: int, p3: int, p4: java.lang.String, p5: java.util.List, p6: java.lang.Object): boolean public final static method equals-impl0(p0: int, p1: int, p2: int, p3: int, p4: java.lang.String, p5: java.util.List, p6: int, p7: int, p8: int, p9: int, p10: java.lang.String, p11: java.util.List): boolean public @org.jetbrains.annotations.NotNull method getFakeOverrideMFVC(): R - public static @org.jetbrains.annotations.NotNull method getFakeOverrideMFVC-impl(p0: int, p1: int, p2: int, p3: int, @org.jetbrains.annotations.NotNull p4: java.lang.String, @org.jetbrains.annotations.NotNull p5: java.util.List): R + public static @org.jetbrains.annotations.NotNull method getFakeOverrideMFVC-impl(p0: int, p1: int, p2: int, p3: int, p4: java.lang.String, p5: java.util.List): R public method getFakeOverrideRegular(): int - public static method getFakeOverrideRegular-impl(p0: int, p1: int, p2: int, p3: int, @org.jetbrains.annotations.NotNull p4: java.lang.String, @org.jetbrains.annotations.NotNull p5: java.util.List): int + public static method getFakeOverrideRegular-impl(p0: int, p1: int, p2: int, p3: int, p4: java.lang.String, p5: java.util.List): int public final @org.jetbrains.annotations.NotNull method getT-GKOAj6k(): java.util.List public final method getX(): int public final method getY-pVg5ArA(): int diff --git a/compiler/testData/codegen/box/valueClasses/defaultParameters.kt b/compiler/testData/codegen/box/valueClasses/defaultParameters.kt index 60d5e22d2a0..129357daa70 100644 --- a/compiler/testData/codegen/box/valueClasses/defaultParameters.kt +++ b/compiler/testData/codegen/box/valueClasses/defaultParameters.kt @@ -8,6 +8,8 @@ value class DPoint(/*inline */val x: Double/* = 1.0*/, /*inline */val y: Double/* = 2.0*/) { fun f1(a: Int, b: Int = -1, c: DPoint = DPoint(-2.0, -3.0)) = listOf(this, x, y, a, b, c) + constructor(x: Double, flip: Boolean = false): this(x, if (flip) -x else x) + companion object { inline operator fun invoke(): DPoint = DPoint(0.0, 0.0) } @@ -106,5 +108,9 @@ fun box(): String { require(RegularObject.pointToString() == "DPoint(x=0.0, y=0.0)") { RegularObject.pointToString() } require(getLineIntersectionPoint().toString() == "DPoint(x=0.0, y=0.0)") { getLineIntersectionPoint().toString() } + require(DPoint(1.0) == DPoint(1.0, 1.0)) { DPoint(1.0).toString() } + require(DPoint(1.0, flip = false) == DPoint(1.0, 1.0)) { DPoint(1.0, flip = false).toString() } + require(DPoint(1.0, flip = true) == DPoint(1.0, -1.0)) { DPoint(1.0, flip = true).toString() } + return "OK" } diff --git a/compiler/testData/codegen/box/valueClasses/defaultParameters.txt b/compiler/testData/codegen/box/valueClasses/defaultParameters.txt index 6192f38a171..6ae455ef1a8 100644 --- a/compiler/testData/codegen/box/valueClasses/defaultParameters.txt +++ b/compiler/testData/codegen/box/valueClasses/defaultParameters.txt @@ -17,6 +17,8 @@ public final class DPoint { static method (): void private synthetic method (p0: double, p1: double): void public synthetic final static method box-impl(p0: double, p1: double): DPoint + public synthetic static method constructor-impl$default(p0: double, p1: boolean, p2: int, p3: kotlin.jvm.internal.DefaultConstructorMarker): DPoint + public final static @org.jetbrains.annotations.NotNull method constructor-impl(p0: double, p1: boolean): DPoint public final static method constructor-impl(p0: double, p1: double): void public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean public static method equals-impl(p0: double, p1: double, p2: java.lang.Object): boolean diff --git a/compiler/testData/codegen/box/valueClasses/equality.txt b/compiler/testData/codegen/box/valueClasses/equality.txt index 86a65a30b15..8e240c574d8 100644 --- a/compiler/testData/codegen/box/valueClasses/equality.txt +++ b/compiler/testData/codegen/box/valueClasses/equality.txt @@ -79,7 +79,7 @@ public final class B { public method hashCode(): int public static method hashCode-impl(p0: int, p1: int, p2: int, p3: int, p4: int, p5: int, p6: java.lang.String, p7: int, p8: int, p9: java.lang.String, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, p16: java.lang.String, p17: int, p18: int, p19: java.lang.String): int public @org.jetbrains.annotations.NotNull method toString(): java.lang.String - public static @org.jetbrains.annotations.NotNull method toString-impl(p0: int, p1: int, p2: int, p3: int, p4: int, p5: int, @org.jetbrains.annotations.NotNull p6: java.lang.String, p7: int, p8: int, @org.jetbrains.annotations.NotNull p9: java.lang.String, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, @org.jetbrains.annotations.NotNull p16: java.lang.String, p17: int, p18: int, @org.jetbrains.annotations.NotNull p19: java.lang.String): java.lang.String + public static @org.jetbrains.annotations.NotNull method toString-impl(p0: int, p1: int, p2: int, p3: int, p4: int, p5: int, p6: java.lang.String, p7: int, p8: int, p9: java.lang.String, p10: int, p11: int, p12: int, p13: int, p14: int, p15: int, p16: java.lang.String, p17: int, p18: int, p19: java.lang.String): java.lang.String public synthetic final method unbox-impl-a1(): A public synthetic final method unbox-impl-a1-f1(): int public synthetic final method unbox-impl-a1-f2(): int diff --git a/compiler/testData/codegen/box/valueClasses/mfvcHashCodeOverride.txt b/compiler/testData/codegen/box/valueClasses/mfvcHashCodeOverride.txt index 1133ed7cec9..904ed933fa6 100644 --- a/compiler/testData/codegen/box/valueClasses/mfvcHashCodeOverride.txt +++ b/compiler/testData/codegen/box/valueClasses/mfvcHashCodeOverride.txt @@ -13,7 +13,7 @@ public final class A { public final @org.jetbrains.annotations.NotNull method getValue1(): MyClass public final @org.jetbrains.annotations.NotNull method getValue2(): MyClass public method hashCode(): int - public static method hashCode-impl(@org.jetbrains.annotations.NotNull p0: MyClass, @org.jetbrains.annotations.NotNull p1: MyClass): int + public static method hashCode-impl(p0: MyClass, p1: MyClass): int public @org.jetbrains.annotations.NotNull method toString(): java.lang.String public static method toString-impl(p0: MyClass, p1: MyClass): java.lang.String public synthetic final method unbox-impl-value1(): MyClass diff --git a/compiler/testData/codegen/box/valueClasses/mfvcTypedEqualsGenerics.txt b/compiler/testData/codegen/box/valueClasses/mfvcTypedEqualsGenerics.txt index 0ab5cc87350..7b4b78d8b2a 100644 --- a/compiler/testData/codegen/box/valueClasses/mfvcTypedEqualsGenerics.txt +++ b/compiler/testData/codegen/box/valueClasses/mfvcTypedEqualsGenerics.txt @@ -18,9 +18,9 @@ public final class MFVC1 { public synthetic final static method box-impl(p0: java.lang.Number, p1: int): MFVC1 public final static method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Number, p1: int): void public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean - public final static method equals-impl(@org.jetbrains.annotations.NotNull p0: java.lang.Number, p1: int, p2: int, p3: int): boolean + public final static method equals-impl(p0: java.lang.Number, p1: int, p2: int, p3: int): boolean public static method equals-impl(p0: java.lang.Number, p1: int, p2: java.lang.Object): boolean - public final static method equals-impl0(@org.jetbrains.annotations.NotNull p0: java.lang.Number, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.Number, p3: int): boolean + public final static method equals-impl0(p0: java.lang.Number, p1: int, @org.jetbrains.annotations.NotNull p2: java.lang.Number, p3: int): boolean public final method getOther(): int public final @org.jetbrains.annotations.NotNull method getX(): java.lang.Number public method hashCode(): int @@ -41,9 +41,9 @@ public final class MFVC2 { public synthetic final static method box-impl(p0: Generic, p1: int): MFVC2 public final static method constructor-impl(@org.jetbrains.annotations.NotNull p0: Generic, p1: int): void public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean - public final static method equals-7Pc2DFw(@org.jetbrains.annotations.NotNull p0: Generic, p1: int, p2: double, p3: int, p4: int): boolean + public final static method equals-7Pc2DFw(p0: Generic, p1: int, p2: double, p3: int, p4: int): boolean public static method equals-impl(p0: Generic, p1: int, p2: java.lang.Object): boolean - public final static method equals-impl0(@org.jetbrains.annotations.NotNull p0: Generic, p1: int, @org.jetbrains.annotations.NotNull p2: Generic, p3: int): boolean + public final static method equals-impl0(p0: Generic, p1: int, @org.jetbrains.annotations.NotNull p2: Generic, p3: int): boolean public final method getOther(): int public final @org.jetbrains.annotations.NotNull method getValue(): Generic public method hashCode(): int diff --git a/compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt b/compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt new file mode 100644 index 00000000000..598c7504ffc --- /dev/null +++ b/compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt @@ -0,0 +1,31 @@ +// WITH_STDLIB +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses + +// TARGET_BACKEND: JVM +// IGNORE_BACKEND: JVM_IR +// Depends on KT-57973 +// JVM_TARGET: 1.8 + +interface Path { + fun dispatch(maxDepth: Int = 42) + fun Int.extension(maxDepth: Int = 42) +} + +OPTIONAL_JVM_INLINE_ANNOTATION +value class RealPath(val x: Int, val y: Int) : Path { + override fun dispatch(maxDepth: Int) = Unit + + fun childrenDispatch(recursively: Boolean): Unit = + if (recursively) dispatch() else dispatch() + + override fun Int.extension(maxDepth: Int) = Unit + + fun Int.childrenExtension(recursively: Boolean): Unit = + if (recursively) extension() else extension() +} + +fun box(): String { + RealPath(1, 2) + return "OK" +} diff --git a/compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt b/compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt new file mode 100644 index 00000000000..8c9aac37e72 --- /dev/null +++ b/compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt @@ -0,0 +1,31 @@ +// WITH_STDLIB +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses, +GenericInlineClassParameter + +// TARGET_BACKEND: JVM +// IGNORE_BACKEND: JVM_IR +// Depends on KT-57973 +// JVM_TARGET: 1.8 + +interface Path { + fun dispatch(maxDepth: Int = 42) + fun Int.extension(maxDepth: Int = 42) +} + +OPTIONAL_JVM_INLINE_ANNOTATION +value class RealPath(val x: T, val y: T) : Path { + override fun dispatch(maxDepth: Int) = Unit + + fun childrenDispatch(recursively: Boolean): Unit = + if (recursively) dispatch() else dispatch() + + override fun Int.extension(maxDepth: Int) = Unit + + fun Int.childrenExtension(recursively: Boolean): Unit = + if (recursively) extension() else extension() +} + +fun box(): String { + RealPath(1, 2) + return "OK" +} diff --git a/compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt b/compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt new file mode 100644 index 00000000000..8db2ddb6b39 --- /dev/null +++ b/compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt @@ -0,0 +1,22 @@ +// LANGUAGE: +MultiPlatformProjects, +ValueClasses +// TARGET_BACKEND: JVM_IR +// WITH_STDLIB + +// MODULE: common +// TARGET_PLATFORM: Common +// FILE: expect.kt + +expect value class ExpectValue(val x: String, val y: String) { + constructor(x: Int, y: Int) +} + +// MODULE: main()()(common) +// TARGET_PLATFORM: JVM +// FILE: actual.kt + +@JvmInline +actual value class ExpectValue actual constructor(actual val x: String, actual val y: String) { + actual constructor(x: Int, y: Int) : this(if (x == 42) "O" else "Not OK: $x\n", if (y == -42) "K" else "Not OK: $y") +} + +fun box() = ExpectValue(42, -42).run { x + y } diff --git a/compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt b/compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt new file mode 100644 index 00000000000..0fb160af321 --- /dev/null +++ b/compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt @@ -0,0 +1,28 @@ +// WITH_STDLIB +// LANGUAGE: +ValueClasses +// TARGET_BACKEND: JVM_IR +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses + +OPTIONAL_JVM_INLINE_ANNOTATION +value class Z(val x: Int, val y: Int) { + public constructor() : this(0) + internal constructor(x: Long): this(x.toInt()) + private constructor(x: Int): this(x, -x) +} + +fun box(): String { + val z1 = Z(111, 222) + if (z1.x != 111) throw AssertionError() + if (z1.y != 222) throw AssertionError() + + val z2 = Z() + if (z2.x != 0) throw AssertionError() + if (z2.y != 0) throw AssertionError() + + val z3 = Z(2222L) + if (z3.x != 2222) throw AssertionError() + if (z3.y != -2222) throw AssertionError() + + return "OK" +} diff --git a/compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt b/compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt new file mode 100644 index 00000000000..9bc59e46956 --- /dev/null +++ b/compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt @@ -0,0 +1,26 @@ +// WITH_STDLIB +// LANGUAGE: +ValueClasses +// TARGET_BACKEND: JVM_IR +// WORKS_WHEN_VALUE_CLASS +// LANGUAGE: +ValueClasses + +OPTIONAL_JVM_INLINE_ANNOTATION +value class Z(val x: Int, val y: Int) { + constructor(vararg ys: Long) : this(ys.size, -ys.size) +} + +fun box(): String { + val z1 = Z(111, 222) + if (z1.x != 111) throw AssertionError() + if (z1.y != 222) throw AssertionError() + + val z2 = Z() + if (z2.x != 0) throw AssertionError() + if (z2.y != 0) throw AssertionError() + + val z3 = Z(2222L) + if (z3.x != 1) throw AssertionError() + if (z3.y != -1) throw AssertionError() + + return "OK" +} diff --git a/compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt b/compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt new file mode 100644 index 00000000000..1a21f5e53cf --- /dev/null +++ b/compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt @@ -0,0 +1,25 @@ +// WITH_STDLIB +// WORKS_WHEN_VALUE_CLASS +// TARGET_BACKEND: JVM_IR +// LANGUAGE: +ValueClasses, +GenericInlineClassParameter + +OPTIONAL_JVM_INLINE_ANNOTATION +value class Z(val x: T, val y: T) { + constructor(vararg ys: Long) : this(ys.size as T, -ys.size as T) +} + +fun box(): String { +// val z1 = Z(111, 222) OVERLOAD_RESOLUTION_AMBIGUITY +// if (z1.x != 111) throw AssertionError() +// if (z1.y != 222) throw AssertionError() + + val z2 = Z() + if (z2.x != 0) throw AssertionError() + if (z2.y != 0) throw AssertionError() + + val z3 = Z(2222L) + if (z3.x != 1) throw AssertionError() + if (z3.y != -1) throw AssertionError() + + return "OK" +} diff --git a/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.kt b/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.kt index cd8ea2ecbee..2cef3a7c113 100644 --- a/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.kt +++ b/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.kt @@ -8,14 +8,21 @@ val l = mutableListOf() @JvmInline value class VC(val x: Int, val y: ULong) { - constructor(xD: Double, yD: Double): this(xD.toInt() - 2, yD.toULong() - 2UL) { + constructor(xD: Double, yD: Double) : this(xD.toInt() - 2, yD.toULong() - 2UL) { l.add(xD) l.add(yD) l.add(x) l.add(y) l.add(this) + l.add(xD.let { it - 1.0 }.let(fun(x: Double) = x - 1.0)) + class Inner(val x: Int) { + constructor(x: Long) : this(x.toInt()) { + l.add(x) + } + } + Inner(Long.MAX_VALUE) } - + init { l.add(x) l.add(y) @@ -25,8 +32,8 @@ value class VC(val x: Int, val y: ULong) { fun box(): String { val vc = VC(1, 2UL) - require(vc == VC(3.0, 4.0)) { "$vc\n${VC(3.0, 4.0)}"} - val actual = listOf(1, 2UL, vc, 1, 2UL, vc, 3.0, 4.0, 1, 2UL, vc) + require(vc == VC(3.0, 4.0)) { "$vc\n${VC(3.0, 4.0)}" } + val actual = listOf(1, 2UL, vc, 1, 2UL, vc, 3.0, 4.0, 1, 2UL, vc, 1.0, Long.MAX_VALUE) require(l == actual) { "$l\n$actual" } return "OK" } diff --git a/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.txt b/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.txt index 8e4d02bb586..1751fdc6339 100644 --- a/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.txt +++ b/compiler/testData/codegen/box/valueClasses/secondaryConstructorsWithBody.txt @@ -7,12 +7,24 @@ public final class SecondaryConstructorsWithBodyKt { public final static @org.jetbrains.annotations.NotNull method getL(): java.util.List } +@kotlin.Metadata +public final class VC$Inner { + // source: 'secondaryConstructorsWithBody.kt' + enclosing method VC.constructor-impl(DD)LVC; + private final field x: int + inner (local) class VC$Inner Inner + public method (p0: int): void + public method (p0: long): void + public final method getX(): int +} + @kotlin.jvm.JvmInline @kotlin.Metadata public final class VC { // source: 'secondaryConstructorsWithBody.kt' private final field x: int private final field y: long + inner (local) class VC$Inner Inner private synthetic method (p0: int, p1: long): void public synthetic final static method box-impl(p0: int, p1: long): VC public final static @org.jetbrains.annotations.NotNull method constructor-impl(p0: double, p1: double): VC diff --git a/compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.kt b/compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.kt new file mode 100644 index 00000000000..0d80ddc46c2 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.kt @@ -0,0 +1,26 @@ +// TARGET_BACKEND: JVM_IR +// LANGUAGE: +ValueClasses +// WITH_STDLIB + +@JvmInline +value class Test(val s: String, val s1: String) { + fun memberFun(x: String) = s + + fun String.memberExtFun() = s + + val memberVal + get() = s + + val String.memberExtVal + get() = s + + + var memberVar + get() = s + set(value) {} + + + var String.memberExtVar + get() = s + set(value) {} +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.txt b/compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.txt new file mode 100644 index 00000000000..5963d156ac4 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.txt @@ -0,0 +1,29 @@ +@kotlin.jvm.JvmInline +@kotlin.Metadata +public final class Test { + // source: 'nullabilityAnnotationsOnInlineClassMembers.kt' + private final @org.jetbrains.annotations.NotNull field s1: java.lang.String + private final @org.jetbrains.annotations.NotNull field s: java.lang.String + private synthetic method (p0: java.lang.String, p1: java.lang.String): void + public synthetic final static method box-impl(p0: java.lang.String, p1: java.lang.String): Test + public final static method constructor-impl(@org.jetbrains.annotations.NotNull p0: java.lang.String, @org.jetbrains.annotations.NotNull p1: java.lang.String): void + public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean + public static method equals-impl(p0: java.lang.String, p1: java.lang.String, p2: java.lang.Object): boolean + public final static method equals-impl0(p0: java.lang.String, p1: java.lang.String, p2: java.lang.String, p3: java.lang.String): boolean + public final static @org.jetbrains.annotations.NotNull method getMemberExtVal-impl(p0: java.lang.String, p1: java.lang.String, @org.jetbrains.annotations.NotNull p2: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getMemberExtVar-impl(p0: java.lang.String, p1: java.lang.String, @org.jetbrains.annotations.NotNull p2: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getMemberVal-impl(p0: java.lang.String, p1: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method getMemberVar-impl(p0: java.lang.String, p1: java.lang.String): java.lang.String + public final @org.jetbrains.annotations.NotNull method getS(): java.lang.String + public final @org.jetbrains.annotations.NotNull method getS1(): java.lang.String + public method hashCode(): int + public static method hashCode-impl(p0: java.lang.String, p1: java.lang.String): int + public final static @org.jetbrains.annotations.NotNull method memberExtFun-impl(p0: java.lang.String, p1: java.lang.String, @org.jetbrains.annotations.NotNull p2: java.lang.String): java.lang.String + public final static @org.jetbrains.annotations.NotNull method memberFun-impl(p0: java.lang.String, p1: java.lang.String, @org.jetbrains.annotations.NotNull p2: java.lang.String): java.lang.String + public final static method setMemberExtVar-impl(p0: java.lang.String, p1: java.lang.String, @org.jetbrains.annotations.NotNull p2: java.lang.String, @org.jetbrains.annotations.NotNull p3: java.lang.String): void + public final static method setMemberVar-impl(p0: java.lang.String, p1: java.lang.String, @org.jetbrains.annotations.NotNull p2: java.lang.String): void + public @org.jetbrains.annotations.NotNull method toString(): java.lang.String + public static method toString-impl(p0: java.lang.String, p1: java.lang.String): java.lang.String + public synthetic final method unbox-impl-s(): java.lang.String + public synthetic final method unbox-impl-s1(): java.lang.String +} diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.fir.kt b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.fir.kt new file mode 100644 index 00000000000..f9eb8cd3879 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.fir.kt @@ -0,0 +1,11 @@ +// WITH_STDLIB +// TARGET_BACKEND: JVM_IR + +@JvmInline +value class A(val x: Int) { + constructor(x: UInt): this(x.toInt()) +} + +data class B(val x: UInt) { + constructor(x: Int) : this(x.toUInt()) +} diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.kt b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.kt new file mode 100644 index 00000000000..d20d6b30c6d --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.kt @@ -0,0 +1,11 @@ +// WITH_STDLIB +// TARGET_BACKEND: JVM_IR + +@JvmInline +value class A(val x: Int) { + constructor(x: UInt): this(x.toInt()) +} + +data class B(val x: UInt) { + constructor(x: Int) : this(x.toUInt()) +} diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.fir.kt b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.fir.kt new file mode 100644 index 00000000000..712802dff68 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.fir.kt @@ -0,0 +1,14 @@ +// !LANGUAGE: +ValueClasses +// WITH_STDLIB +// TARGET_BACKEND: JVM_IR + +@JvmInline +value class A(val x: Int, val y: Int) { + constructor(other: A): this(other.x, other.y) + constructor(x: UInt, y: UInt): this(x.toInt(), y.toInt()) +} + +data class B(val x: UInt, val y: UInt) { + constructor(other: A) : this(other.x, other.y) + constructor(x: Int, y: Int) : this(x.toUInt(), y.toUInt()) +} diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.kt b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.kt new file mode 100644 index 00000000000..16011d6ca94 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.kt @@ -0,0 +1,14 @@ +// !LANGUAGE: +ValueClasses +// WITH_STDLIB +// TARGET_BACKEND: JVM_IR + +@JvmInline +value class A(val x: Int, val y: Int) { + constructor(other: A): this(other.x, other.y) + constructor(x: UInt, y: UInt): this(x.toInt(), y.toInt()) +} + +data class B(val x: UInt, val y: UInt) { + constructor(other: A) : this(other.x, other.y) + constructor(x: Int, y: Int) : this(x.toUInt(), y.toUInt()) +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJvmIrBackendGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJvmIrBackendGenerated.java index 92e49746abf..bd70035e425 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJvmIrBackendGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithJvmIrBackendGenerated.java @@ -474,6 +474,22 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic } } + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses") + @TestDataPath("$PROJECT_ROOT") + public class InlineClasses { + @Test + public void testAllFilesPresentInInlineClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses"), Pattern.compile("^(.+)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("declarationClash.kt") + public void testDeclarationClash() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses/declarationClash.kt"); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames") @TestDataPath("$PROJECT_ROOT") @@ -651,6 +667,22 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_ir.kt"); } } + + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses") + @TestDataPath("$PROJECT_ROOT") + public class ValueClasses { + @Test + public void testAllFilesPresentInValueClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses"), Pattern.compile("^(.+)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true); + } + + @Test + @TestMetadata("declarationClash.kt") + public void testDeclarationClash() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses/declarationClash.kt"); + } + } } @Nested diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithOldJvmBackendGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithOldJvmBackendGenerated.java index 45f774699ab..7bb216e6f05 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithOldJvmBackendGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticsTestWithOldJvmBackendGenerated.java @@ -468,6 +468,16 @@ public class DiagnosticsTestWithOldJvmBackendGenerated extends AbstractDiagnosti } } + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses") + @TestDataPath("$PROJECT_ROOT") + public class InlineClasses { + @Test + public void testAllFilesPresentInInlineClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_OLD, true); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames") @TestDataPath("$PROJECT_ROOT") @@ -645,6 +655,16 @@ public class DiagnosticsTestWithOldJvmBackendGenerated extends AbstractDiagnosti runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_old.kt"); } } + + @Nested + @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses") + @TestDataPath("$PROJECT_ROOT") + public class ValueClasses { + @Test + public void testAllFilesPresentInValueClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/valueClasses"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_OLD, true); + } + } } @Nested 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 10f400ec94c..ebec89f523c 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 @@ -21983,6 +21983,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { @@ -49474,6 +49480,18 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInValueClasses() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/valueClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + + @Test + @TestMetadata("overrideFunctionWithDefaultParameter.kt") + public void testOverrideFunctionWithDefaultParameter() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("overrideFunctionWithDefaultParameterGeneric.kt") + public void testOverrideFunctionWithDefaultParameterGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } } @Nested 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 20c820a905e..a5c263d00c2 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 @@ -22991,6 +22991,18 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { @@ -43603,6 +43615,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("simpleConstructorWithInlineClassParameter.kt") public void testSimpleConstructorWithInlineClassParameter() throws Exception { @@ -43925,6 +43943,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/reflection/call/valueClasses/properties.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("suspendFunction.kt") public void testSuspendFunction() throws Exception { @@ -52181,6 +52205,18 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/valueClasses/mutableSharedMfvcVar.kt"); } + @Test + @TestMetadata("overrideFunctionWithDefaultParameter.kt") + public void testOverrideFunctionWithDefaultParameter() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("overrideFunctionWithDefaultParameterGeneric.kt") + public void testOverrideFunctionWithDefaultParameterGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("overrides.kt") public void testOverrides() throws Exception { @@ -52205,6 +52241,30 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/valueClasses/regularClassSecondaryConstructorWithMfvc.kt"); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVararg.kt") + public void testSecondaryConstructorWithVararg() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVarargGeneric.kt") + public void testSecondaryConstructorWithVarargGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorsWithBody.kt") public void testSecondaryConstructorsWithBody() throws Exception { 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 a3dc99647e7..12b57eef153 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 @@ -22991,6 +22991,18 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { @@ -43603,6 +43615,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/primaryValOfInlineClass.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("simpleConstructorWithInlineClassParameter.kt") public void testSimpleConstructorWithInlineClassParameter() throws Exception { @@ -43925,6 +43943,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/reflection/call/valueClasses/properties.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/reflection/call/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("suspendFunction.kt") public void testSuspendFunction() throws Exception { @@ -52181,6 +52205,18 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/valueClasses/mutableSharedMfvcVar.kt"); } + @Test + @TestMetadata("overrideFunctionWithDefaultParameter.kt") + public void testOverrideFunctionWithDefaultParameter() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("overrideFunctionWithDefaultParameterGeneric.kt") + public void testOverrideFunctionWithDefaultParameterGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("overrides.kt") public void testOverrides() throws Exception { @@ -52205,6 +52241,30 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/valueClasses/regularClassSecondaryConstructorWithMfvc.kt"); } + @Test + @TestMetadata("secondaryConstructorExpectActual.kt") + public void testSecondaryConstructorExpectActual() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorExpectActual.kt"); + } + + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVararg.kt") + public void testSecondaryConstructorWithVararg() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @Test + @TestMetadata("secondaryConstructorWithVarargGeneric.kt") + public void testSecondaryConstructorWithVarargGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @Test @TestMetadata("secondaryConstructorsWithBody.kt") public void testSecondaryConstructorsWithBody() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java index 094582f5781..fcc5b3708d8 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBytecodeListingTestGenerated.java @@ -2571,5 +2571,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes public void testAnnotations() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/valueClasses/annotations.kt"); } + + @Test + @TestMetadata("nullabilityAnnotationsOnInlineClassMembers.kt") + public void testNullabilityAnnotationsOnInlineClassMembers() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/valueClasses/nullabilityAnnotationsOnInlineClassMembers.kt"); + } } } diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 0cfd8237f9a..cb8b3ea79c6 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -18335,6 +18335,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); } + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); @@ -40268,9 +40273,23 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath); } + private void runTest(String testDataFilePath, java.util.function.Function transformer) throws Exception { + KotlinTestUtils.runTest(path -> doTestWithTransformer(path, transformer), TargetBackend.JVM, testDataFilePath); + } + public void testAllFilesPresentInValueClasses() throws Exception { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/valueClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + + @TestMetadata("overrideFunctionWithDefaultParameter.kt") + public void testOverrideFunctionWithDefaultParameter() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameter.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } + + @TestMetadata("overrideFunctionWithDefaultParameterGeneric.kt") + public void testOverrideFunctionWithDefaultParameterGeneric() throws Exception { + runTest("compiler/testData/codegen/box/valueClasses/overrideFunctionWithDefaultParameterGeneric.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal()); + } } @TestMetadata("compiler/testData/codegen/box/vararg") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index f487b9e4987..34cbf0472a9 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -17317,6 +17317,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 a7ff3878a0c..db6c97baeea 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 @@ -17335,6 +17335,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 9e53aa29d9d..56731c5b82d 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 @@ -17335,6 +17335,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 d71fb99b3a1..ce346b84f79 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 @@ -17335,6 +17335,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 1155afd7e11..a923ac7867d 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 @@ -17368,6 +17368,7 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe register("compiler/testData/codegen/box/inlineClasses/safeAsOfTypeParameterWithInlineClassBoundGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModule.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClass.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); @@ -19490,6 +19491,13 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + // There is a registered source transformer for the testcase: TransformersFunctions.getRemoveOptionalJvmInlineAnnotation() + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt"); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 e439095ece8..2e1f8e14d16 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 @@ -17752,6 +17752,7 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB register("compiler/testData/codegen/box/inlineClasses/safeAsOfTypeParameterWithInlineClassBoundGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModule.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClass.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); @@ -19874,6 +19875,13 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + // There is a registered source transformer for the testcase: TransformersFunctions.getRemoveOptionalJvmInlineAnnotation() + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt"); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 389581f209d..01ae07cf044 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 @@ -17176,6 +17176,7 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest register("compiler/testData/codegen/box/inlineClasses/safeAsOfTypeParameterWithInlineClassBoundGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModule.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClass.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); @@ -19298,6 +19299,13 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + // There is a registered source transformer for the testcase: TransformersFunctions.getRemoveOptionalJvmInlineAnnotation() + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt"); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { 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 ddf93917861..e5296c27d5d 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 @@ -17560,6 +17560,7 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT register("compiler/testData/codegen/box/inlineClasses/safeAsOfTypeParameterWithInlineClassBoundGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModule.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVarargGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); register("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClass.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); @@ -19682,6 +19683,13 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt"); } + @Test + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + // There is a registered source transformer for the testcase: TransformersFunctions.getRemoveOptionalJvmInlineAnnotation() + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt"); + } + @Test @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java index f656d4dd6d2..799a17fb7df 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/IrCodegenBoxWasmTestGenerated.java @@ -15325,6 +15325,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/inlineClasses/samWrapperDifferentModuleGeneric.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); } + @TestMetadata("secondaryConstructorVisibilies.kt") + public void testSecondaryConstructorVisibilies() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorVisibilies.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation()); + } + @TestMetadata("secondaryConstructorWithVararg.kt") public void testSecondaryConstructorWithVararg() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorWithVararg.kt", TransformersFunctions.getRemoveOptionalJvmInlineAnnotation());