[K2] Support serialization of complex annotations
#KT-57611 Fixed
This commit is contained in:
@@ -7,20 +7,18 @@ package org.jetbrains.kotlin.fir.backend
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.PrimitiveType
|
import org.jetbrains.kotlin.builtins.PrimitiveType
|
||||||
import org.jetbrains.kotlin.builtins.UnsignedType
|
import org.jetbrains.kotlin.builtins.UnsignedType
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationArgumentMapping
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCall
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.serialization.constant.ConstValueProvider
|
import org.jetbrains.kotlin.fir.serialization.constant.ConstValueProvider
|
||||||
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrProperty
|
import org.jetbrains.kotlin.ir.declarations.IrProperty
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConst
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.util.getArgumentsWithIr
|
import org.jetbrains.kotlin.ir.util.getArgumentsWithIr
|
||||||
import org.jetbrains.kotlin.types.ConstantValueKind
|
import org.jetbrains.kotlin.types.ConstantValueKind
|
||||||
@@ -56,7 +54,21 @@ class ConstValueProviderImpl(
|
|||||||
else -> error("Cannot extract IR declaration for ${firAnnotationContainer.render()}")
|
else -> error("Cannot extract IR declaration for ${firAnnotationContainer.render()}")
|
||||||
} ?: return firAnnotation
|
} ?: return firAnnotation
|
||||||
|
|
||||||
return buildNewFirAnnotationByCorrespondingIrAnnotation(irDeclaration, firAnnotationContainer, firAnnotation)
|
val correctFirContainer = when (firAnnotation.useSiteTarget) {
|
||||||
|
AnnotationUseSiteTarget.FIELD, AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD -> {
|
||||||
|
(firAnnotationContainer as? FirProperty)?.backingField ?: return firAnnotation
|
||||||
|
}
|
||||||
|
else -> firAnnotationContainer
|
||||||
|
}
|
||||||
|
|
||||||
|
val correctIrDeclaration = when (firAnnotation.useSiteTarget) {
|
||||||
|
AnnotationUseSiteTarget.FIELD, AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD -> {
|
||||||
|
(irDeclaration as? IrProperty)?.backingField ?: return firAnnotation
|
||||||
|
}
|
||||||
|
else -> irDeclaration
|
||||||
|
}
|
||||||
|
|
||||||
|
return buildNewFirAnnotationByCorrespondingIrAnnotation(correctIrDeclaration, correctFirContainer, firAnnotation)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getNewFirAnnotationWithConstantValues(
|
override fun getNewFirAnnotationWithConstantValues(
|
||||||
@@ -121,8 +133,7 @@ class ConstValueProviderImpl(
|
|||||||
return@forEach
|
return@forEach
|
||||||
}
|
}
|
||||||
val irExpression = irArguments.single { it.first.name == name }.second
|
val irExpression = irArguments.single { it.first.name == name }.second
|
||||||
// TODO recursion for annotations
|
mapping[name] = irExpression.convertToFir(firExpression)
|
||||||
mapping[name] = (irExpression as? IrConst<*>)?.toFirConst() ?: firExpression
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,6 +150,54 @@ class ConstValueProviderImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun IrElement.convertToFir(firExpression: FirExpression): FirExpression {
|
||||||
|
return when {
|
||||||
|
this is IrConst<*> -> toFirConst() ?: firExpression
|
||||||
|
this is IrConstructorCall && firExpression is FirFunctionCall -> {
|
||||||
|
val resolvedArgumentMapping = firExpression.resolvedArgumentMapping ?: return firExpression
|
||||||
|
val irArgs = this.getArgumentsWithIr()
|
||||||
|
buildFunctionCall {
|
||||||
|
this.source = firExpression.source
|
||||||
|
this.typeRef = firExpression.typeRef
|
||||||
|
this.dispatchReceiver = firExpression.dispatchReceiver
|
||||||
|
this.extensionReceiver = firExpression.extensionReceiver
|
||||||
|
this.explicitReceiver = firExpression.explicitReceiver
|
||||||
|
this.calleeReference = firExpression.calleeReference
|
||||||
|
this.annotations.addAll(firExpression.annotations)
|
||||||
|
this.typeArguments.addAll(firExpression.typeArguments)
|
||||||
|
|
||||||
|
val newArgMapping = LinkedHashMap(
|
||||||
|
resolvedArgumentMapping.map { (key, value) ->
|
||||||
|
irArgs.first { it.first.name == value.name }.second.convertToFir(key) to value
|
||||||
|
}.toMap()
|
||||||
|
)
|
||||||
|
this.argumentList = buildResolvedArgumentList(newArgMapping, firExpression.argumentList.source)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this is IrVararg && firExpression is FirVarargArgumentsExpression -> buildVarargArgumentsExpression {
|
||||||
|
this.source = firExpression.source
|
||||||
|
this.typeRef = firExpression.typeRef
|
||||||
|
this.annotations.addAll(firExpression.annotations)
|
||||||
|
this.varargElementType = firExpression.varargElementType
|
||||||
|
this.arguments.addAll(
|
||||||
|
firExpression.arguments.zip(this@convertToFir.elements).map { it.second.convertToFir(it.first) }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
this is IrVararg && firExpression is FirArrayOfCall -> buildArrayOfCall {
|
||||||
|
this.source = firExpression.source
|
||||||
|
this.typeRef = firExpression.typeRef
|
||||||
|
this.annotations.addAll(firExpression.annotations)
|
||||||
|
this.argumentList = buildArgumentList {
|
||||||
|
this.source = firExpression.argumentList.source
|
||||||
|
this.arguments.addAll(
|
||||||
|
firExpression.argumentList.arguments.zip(this@convertToFir.elements).map { it.second.convertToFir(it.first) }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> firExpression
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun IrConst<*>.getConstantKind(): ConstantValueKind<*>? {
|
private fun IrConst<*>.getConstantKind(): ConstantValueKind<*>? {
|
||||||
if (this.kind == IrConstKind.Null) return ConstantValueKind.Null
|
if (this.kind == IrConstKind.Null) return ConstantValueKind.Null
|
||||||
|
|
||||||
|
|||||||
+18
@@ -28428,11 +28428,29 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -28428,11 +28428,29 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-2
@@ -1,5 +1,3 @@
|
|||||||
// IGNORE_BACKEND_K2: NATIVE, JS_IR
|
|
||||||
// Ignore reason: KT-57611
|
|
||||||
// MODULE: lib
|
// MODULE: lib
|
||||||
// FILE: Class.kt
|
// FILE: Class.kt
|
||||||
|
|
||||||
|
|||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
// TARGET_BACKEND: JVM_IR
|
||||||
|
// TARGET_BACKEND: JS_IR
|
||||||
|
// TARGET_BACKEND: NATIVE
|
||||||
|
|
||||||
|
// MODULE: lib
|
||||||
|
// FILE: lib.kt
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class Annotation(val str: String)
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class AnnotationWithAnnotation(val anno: Annotation)
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class AnnotationWithAnnotationWithAnnotation(val anno: AnnotationWithAnnotation)
|
||||||
|
|
||||||
|
@AnnotationWithAnnotation(Annotation("Str" + "ing"))
|
||||||
|
class A
|
||||||
|
|
||||||
|
@AnnotationWithAnnotationWithAnnotation(AnnotationWithAnnotation(Annotation("Str" + "ing")))
|
||||||
|
class B
|
||||||
|
|
||||||
|
// MODULE: main
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
Vendored
+13
@@ -50,6 +50,19 @@ enum class SomeEnum {
|
|||||||
B;
|
B;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: can be uncommented after fix KT-57135
|
||||||
|
//@field:BinaryAnnotation("Str" + "ing")
|
||||||
|
//var x: Int = 5
|
||||||
|
|
||||||
|
//object Delegate {
|
||||||
|
// operator fun getValue(instance: Any?, property: Any) : String = ""
|
||||||
|
// operator fun setValue(instance: Any?, property: Any, value: String) {}
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//@delegate:BinaryAnnotation("Str" + "ing")
|
||||||
|
//val p: String by Delegate
|
||||||
|
|
||||||
|
|
||||||
// 7. VALUE_PARAMETER
|
// 7. VALUE_PARAMETER
|
||||||
fun @receiver:BinaryAnnotation("Str" + "ing") String.myExtension() { }
|
fun @receiver:BinaryAnnotation("Str" + "ing") String.myExtension() { }
|
||||||
fun foo(@BinaryAnnotation("Str" + "ing") a: Int) { }
|
fun foo(@BinaryAnnotation("Str" + "ing") a: Int) { }
|
||||||
|
|||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
// TARGET_BACKEND: JVM_IR
|
||||||
|
// TARGET_BACKEND: JS_IR
|
||||||
|
// TARGET_BACKEND: NATIVE
|
||||||
|
|
||||||
|
// MODULE: lib
|
||||||
|
// FILE: lib.kt
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class AnnotationWithVararg(vararg val array: String)
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class AnnotationWithArray(val array: Array<String>)
|
||||||
|
|
||||||
|
@AnnotationWithVararg("Str" + "ing", "String2", "String${3}")
|
||||||
|
class A
|
||||||
|
|
||||||
|
@AnnotationWithArray(["Str" + "ing", "String2", "String${3}"])
|
||||||
|
class B
|
||||||
|
|
||||||
|
// MODULE: main
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
Vendored
+23
@@ -0,0 +1,23 @@
|
|||||||
|
// TARGET_BACKEND: JVM_IR
|
||||||
|
// TARGET_BACKEND: JS_IR
|
||||||
|
// TARGET_BACKEND: NATIVE
|
||||||
|
|
||||||
|
// MODULE: lib
|
||||||
|
// FILE: lib.kt
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.CLASS)
|
||||||
|
@Retention(AnnotationRetention.BINARY)
|
||||||
|
annotation class AnnotationWithDefault(val str: String = "Str" + "ing")
|
||||||
|
|
||||||
|
@AnnotationWithDefault()
|
||||||
|
class A
|
||||||
|
|
||||||
|
@AnnotationWithDefault("Other")
|
||||||
|
class B
|
||||||
|
|
||||||
|
// MODULE: main
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+18
@@ -28428,11 +28428,29 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -28428,11 +28428,29 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -21182,11 +21182,29 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -21182,11 +21182,29 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -21182,11 +21182,29 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("annotationInArguments.kt")
|
||||||
|
public void testAnnotationInArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationInArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// KT-57135 K2 dosen't take into account `field` target on annotation for property
|
||||||
|
// MUTED_WHEN: K2
|
||||||
package test
|
package test
|
||||||
|
|
||||||
annotation class AnnoClass
|
annotation class AnnoClass
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// KT-57135 K2 dosen't take into account `field` target on annotation for property
|
||||||
|
// MUTED_WHEN: K2
|
||||||
package test
|
package test
|
||||||
|
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|||||||
+18
@@ -24376,11 +24376,29 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
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
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -24140,11 +24140,29 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/involvesIrInterpreter/serialization"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
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
|
@Test
|
||||||
@TestMetadata("annotationSerialization.kt")
|
@TestMetadata("annotationSerialization.kt")
|
||||||
public void testAnnotationSerialization() throws Exception {
|
public void testAnnotationSerialization() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationSerialization.kt");
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user