From 9c8b8f053ec770e4f0fdbb17f9509dda5ed6a0aa Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 31 Aug 2021 16:25:39 +0300 Subject: [PATCH] FIR: handle named argument properly during annotation serialization --- .../constant/FirToConstantValueTransformer.kt | 4 +++ .../FirBlackBoxCodegenTestGenerated.java | 6 ++++ .../box/fir/namedArgumentOnTypeAnnotation.kt | 29 +++++++++++++++++++ .../IrBlackBoxCodegenTestGenerated.java | 6 ++++ 4 files changed, 45 insertions(+) create mode 100644 compiler/testData/codegen/box/fir/namedArgumentOnTypeAnnotation.kt 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 23e09547cf8..2f9949d528e 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 @@ -97,4 +97,8 @@ internal object FirToConstantValueTransformer : FirDefaultVisitor { return ArrayValue(varargArgumentsExpression.arguments.mapNotNull { it.accept(this, null) }) } + + override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: Nothing?): ConstantValue<*>? { + return namedArgumentExpression.expression.accept(this, null) + } } diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 578ced59f0a..75eae1632f9 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -16118,6 +16118,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/fir/NameHighlighter.kt"); } + @Test + @TestMetadata("namedArgumentOnTypeAnnotation.kt") + public void testNamedArgumentOnTypeAnnotation() throws Exception { + runTest("compiler/testData/codegen/box/fir/namedArgumentOnTypeAnnotation.kt"); + } + @Test @TestMetadata("noSymbolForIntRangeIterator.kt") public void testNoSymbolForIntRangeIterator() throws Exception { diff --git a/compiler/testData/codegen/box/fir/namedArgumentOnTypeAnnotation.kt b/compiler/testData/codegen/box/fir/namedArgumentOnTypeAnnotation.kt new file mode 100644 index 00000000000..a44d66242da --- /dev/null +++ b/compiler/testData/codegen/box/fir/namedArgumentOnTypeAnnotation.kt @@ -0,0 +1,29 @@ +// TARGET_BACKEND: JVM_IR +// FILE: Nls.java + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Retention(RetentionPolicy.CLASS) +@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE, ElementType.TYPE, ElementType.PACKAGE}) +public @interface Nls { + + enum Capitalization { + NotSpecified, + Title, + Sentence + } + + Capitalization capitalization() default Capitalization.NotSpecified; +} + + +// FILE: box.kt + +fun foo(arg: @Nls(capitalization = Nls.Capitalization.Sentence) String) = arg + +fun box() = foo("OK") \ No newline at end of file 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 2d5f8208699..87ebca7f814 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 @@ -16118,6 +16118,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/fir/NameHighlighter.kt"); } + @Test + @TestMetadata("namedArgumentOnTypeAnnotation.kt") + public void testNamedArgumentOnTypeAnnotation() throws Exception { + runTest("compiler/testData/codegen/box/fir/namedArgumentOnTypeAnnotation.kt"); + } + @Test @TestMetadata("noSymbolForIntRangeIterator.kt") public void testNoSymbolForIntRangeIterator() throws Exception {