diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt index 3d13073f33d..8ced6285bec 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/constant/FirToConstantValueTransformer.kt @@ -73,6 +73,12 @@ private abstract class FirToConstantValueTransformer( } } + override fun visitStringConcatenationCall(stringConcatenationCall: FirStringConcatenationCall, data: FirSession): ConstantValue<*>? { + val strings = stringConcatenationCall.argumentList.arguments.map { it.accept(this, data) } + if (strings.any { it == null || it !is StringValue }) return null + return StringValue(strings.joinToString(separator = "") { (it as StringValue).value }) + } + override fun visitArrayOfCall( arrayOfCall: FirArrayOfCall, data: FirSession @@ -208,6 +214,10 @@ internal object FirToConstantValueChecker : FirDefaultVisitor { + @Deprecated(message = "O/{id}") class Foo constructor() + object Obj { + const val O: String = "O" + val concat: String = "OK" + } \ No newline at end of file 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 4e740040778..9603d66d4a2 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 @@ -24832,6 +24832,46 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB runTest("compiler/testData/codegen/box/involvesIrInterpreter/dumpIrAndCheck/unsignedConst.kt"); } } + + @Nested + @TestMetadata("compiler/testData/codegen/box/involvesIrInterpreter/serialization") + @TestDataPath("$PROJECT_ROOT") + @Tag("codegenK2") + @Tag("firCodegen") + @UseExtTestCaseGroupProvider() + @FirPipeline() + @UsePartialLinkage(mode = Mode.DISABLED) + @Tag("no-partial-linkage-may-be-skipped") + public class Serialization { + @Test + public void testAllFilesPresentInSerialization() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("annotationInArguments.kt") + public void testAnnotationInArguments() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt"); + } + + @Test + @TestMetadata("annotationSerialization.kt") + public void testAnnotationSerialization() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt"); + } + + @Test + @TestMetadata("annotationWithArray.kt") + public void testAnnotationWithArray() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithArray.kt"); + } + + @Test + @TestMetadata("annotationWithDefaults.kt") + public void testAnnotationWithDefaults() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithDefaults.kt"); + } + } } @Nested diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeKLibContentsTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeKLibContentsTestGenerated.java index ac15bf03c08..685cb3ab212 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeKLibContentsTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeKLibContentsTestGenerated.java @@ -125,6 +125,12 @@ public class FirNativeKLibContentsTestGenerated extends AbstractNativeKlibConten runTest("native/native.tests/testData/klibContents/builtinsSerializer/sourceRetainedAnnotation.kt"); } + @Test + @TestMetadata("stringConcatenation.kt") + public void testStringConcatenation() throws Exception { + runTest("native/native.tests/testData/klibContents/builtinsSerializer/stringConcatenation.kt"); + } + @Test @TestMetadata("typeParameterAnnotation.kt") public void testTypeParameterAnnotation() 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 24432622744..0b1fb30c195 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 @@ -24597,6 +24597,45 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT runTest("compiler/testData/codegen/box/involvesIrInterpreter/dumpIrAndCheck/unsignedConst.kt"); } } + + @Nested + @TestMetadata("compiler/testData/codegen/box/involvesIrInterpreter/serialization") + @TestDataPath("$PROJECT_ROOT") + @Tag("codegen") + @Tag("k1Codegen") + @UseExtTestCaseGroupProvider() + @UsePartialLinkage(mode = Mode.DISABLED) + @Tag("no-partial-linkage-may-be-skipped") + public class Serialization { + @Test + public void testAllFilesPresentInSerialization() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("annotationInArguments.kt") + public void testAnnotationInArguments() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt"); + } + + @Test + @TestMetadata("annotationSerialization.kt") + public void testAnnotationSerialization() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt"); + } + + @Test + @TestMetadata("annotationWithArray.kt") + public void testAnnotationWithArray() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithArray.kt"); + } + + @Test + @TestMetadata("annotationWithDefaults.kt") + public void testAnnotationWithDefaults() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithDefaults.kt"); + } + } } @Nested diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeKLibContentsTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeKLibContentsTestGenerated.java index 80192f76e7e..4170851b6ee 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeKLibContentsTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeKLibContentsTestGenerated.java @@ -120,6 +120,12 @@ public class NativeKLibContentsTestGenerated extends AbstractNativeKlibContentsT runTest("native/native.tests/testData/klibContents/builtinsSerializer/sourceRetainedAnnotation.kt"); } + @Test + @TestMetadata("stringConcatenation.kt") + public void testStringConcatenation() throws Exception { + runTest("native/native.tests/testData/klibContents/builtinsSerializer/stringConcatenation.kt"); + } + @Test @TestMetadata("typeParameterAnnotation.kt") public void testTypeParameterAnnotation() throws Exception {