From 588549d1d07ab03cf0540d508705e0c403044432 Mon Sep 17 00:00:00 2001 From: Sonya Valchuk Date: Tue, 19 Dec 2023 11:52:44 +0000 Subject: [PATCH] JVM_IR: add offsets to JvmStatic and JvmOverloads proxies KAPT3 needs them to correct error types in arguments. #KT-64639 Fixed --- .../lower/JvmOverloadsAnnotationLowering.kt | 3 + .../backend/jvm/JvmCachedDeclarations.kt | 1 + .../converter/errorLocationMapping.fir.txt | 50 +++ .../converter/errorLocationMapping.ir.txt | 314 ++++++++++++++++++ .../converter/errorLocationMapping.kt | 8 + .../converter/errorLocationMapping.txt | 50 +++ .../testData/converter/jvmOverloads.ir.txt | 138 -------- .../testData/converter/jvmOverloads.kt | 1 - .../testData/converter/modifiers.ir.txt | 14 +- .../testData/kotlinRunner/Overloads.it.ir.txt | 50 --- 10 files changed, 433 insertions(+), 196 deletions(-) create mode 100644 plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.ir.txt delete mode 100644 plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.ir.txt delete mode 100644 plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Overloads.it.ir.txt diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt index f69925d05c9..0d08e88db0d 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor import org.jetbrains.kotlin.ir.builders.declarations.buildFun +import org.jetbrains.kotlin.ir.builders.setSourceRange import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.impl.* import org.jetbrains.kotlin.ir.types.defaultType @@ -120,6 +121,7 @@ private class JvmOverloadsAnnotationLowering(val context: JvmBackendContext) : C val res = when (oldFunction) { is IrConstructor -> { buildConstructor { + setSourceRange(oldFunction) origin = JvmLoweredDeclarationOrigin.JVM_OVERLOADS_WRAPPER name = oldFunction.name visibility = oldFunction.visibility @@ -128,6 +130,7 @@ private class JvmOverloadsAnnotationLowering(val context: JvmBackendContext) : C } } is IrSimpleFunction -> buildFun { + setSourceRange(oldFunction) origin = JvmLoweredDeclarationOrigin.JVM_OVERLOADS_WRAPPER name = oldFunction.name visibility = oldFunction.visibility diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt index c3c37019622..a01e7f38515 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt @@ -135,6 +135,7 @@ class JvmCachedDeclarations( private fun IrClass.makeProxy(target: IrSimpleFunction, isStatic: Boolean) = context.irFactory.buildFun { + setSourceRange(target) returnType = target.returnType origin = JvmLoweredDeclarationOrigin.JVM_STATIC_WRAPPER // The proxy needs to have the same name as what it is targeting. If that is a property accessor, diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.fir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.fir.txt index cd3620e7004..cba93ced620 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.fir.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.fir.txt @@ -119,6 +119,9 @@ public final class ErrorInConstructorParameter { * // signature: f4()Lerror/NonExistentClass; * public final fun f4(): error/NonExistentClass * + * // signature: f5(Lerror/NonExistentClass;Ljava/lang/String;)V + * public final fun f5(a: error/NonExistentClass, b: kotlin/String (* = ... *)): kotlin/Unit + * * // signature: overloads(Lerror/NonExistentClass;)V * public final fun overloads(a: error/NonExistentClass): kotlin/Unit * @@ -146,6 +149,10 @@ public final class ErrorInConstructorParameter { * public final get * public final set * + * // companion object: Companion + * + * // nested class: Companion + * * // module name: main * } */ @@ -154,6 +161,8 @@ public final class ErrorInDeclarations { public java.lang.String p1; public ABC p2; public BCD p3; + @org.jetbrains.annotations.NotNull() + public static final ErrorInDeclarations.Companion Companion = null; public ErrorInDeclarations() { super(); @@ -209,6 +218,47 @@ public final class ErrorInDeclarations { public final ABC f4() { return null; } + + @kotlin.jvm.JvmOverloads() + public final void f5(@org.jetbrains.annotations.NotNull() + ABC a) { + } + + @kotlin.jvm.JvmOverloads() + public final void f5(@org.jetbrains.annotations.NotNull() + ABC a, @org.jetbrains.annotations.NotNull() + java.lang.String b) { + } + + @kotlin.jvm.JvmStatic() + public static final void f6(@org.jetbrains.annotations.NotNull() + ABC a) { + } + + /** + * public final companion object ErrorInDeclarations.Companion : kotlin/Any { + * + * // signature: ()V + * private constructor() + * + * // signature: f6(Lerror/NonExistentClass;)V + * public final fun f6(a: error/NonExistentClass): kotlin/Unit + * + * // module name: main + * } + */ + @kotlin.Metadata() + public static final class Companion { + + private Companion() { + super(); + } + + @kotlin.jvm.JvmStatic() + public final void f6(@org.jetbrains.annotations.NotNull() + ABC a) { + } + } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.ir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.ir.txt new file mode 100644 index 00000000000..5507ba4a70c --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.ir.txt @@ -0,0 +1,314 @@ +import kotlin.reflect.KClass; + +@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) +/** + * public final annotation class Anno : kotlin/Annotation { + * + * // signature: (Lkotlin/reflect/KClass;)V + * public constructor(a: kotlin/reflect/KClass) + * + * // getter: a()Ljava/lang/Class; + * public final val a: kotlin/reflect/KClass + * public final get + * + * // module name: main + * } + */ +@kotlin.Metadata() +public abstract @interface Anno { + + public abstract java.lang.Class a(); +} + +//////////////////// + + +import kotlin.reflect.KClass; + +@Anno(a = ABC.class) +/** + * public final class ErrorInAnnotation : kotlin/Any { + * + * // signature: ()V + * public constructor() + * + * // module name: main + * } + */ +@kotlin.Metadata() +public final class ErrorInAnnotation { + + public ErrorInAnnotation() { + super(); + } +} + +//////////////////// + + +import kotlin.reflect.KClass; + +/** + * public final class ErrorInConstructorParameter : kotlin/Any { + * + * // signature: (Ljava/lang/String;Lerror/NonExistentClass;Ljava/util/List;)V + * public constructor(a: kotlin/String, b: error/NonExistentClass, c: kotlin/collections/List) + * + * // field: a:Ljava/lang/String; + * // getter: getA()Ljava/lang/String; + * public final val a: kotlin/String + * public final get + * + * // field: b:Lerror/NonExistentClass; + * // getter: getB()Lerror/NonExistentClass; + * public final val b: error/NonExistentClass + * public final get + * + * // field: c:Ljava/util/List; + * // getter: getC()Ljava/util/List; + * public final val c: kotlin/collections/List + * public final get + * + * // module name: main + * } + */ +@kotlin.Metadata() +public final class ErrorInConstructorParameter { + @org.jetbrains.annotations.NotNull() + private final java.lang.String a = null; + @org.jetbrains.annotations.NotNull() + private final ABC b = null; + @org.jetbrains.annotations.NotNull() + private final java.util.List c = null; + + public ErrorInConstructorParameter(@org.jetbrains.annotations.NotNull() + java.lang.String a, @org.jetbrains.annotations.NotNull() + ABC b, @org.jetbrains.annotations.NotNull() + java.util.List c) { + super(); + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getA() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final ABC getB() { + return null; + } + + @org.jetbrains.annotations.NotNull() + public final java.util.List getC() { + return null; + } +} + +//////////////////// + + +import kotlin.reflect.KClass; + +/** + * public final class ErrorInDeclarations : kotlin/Any { + * + * // signature: ()V + * public constructor() + * + * // signature: f1(Ljava/lang/String;Lerror/NonExistentClass;)V + * public final fun f1(a: kotlin/String, b: error/NonExistentClass): kotlin/Unit + * + * // signature: f2()V + * public final fun f2(): kotlin/Unit + * + * // signature: f3()V + * public final fun f3(): kotlin/Unit + * + * // signature: f4()Lerror/NonExistentClass; + * public final fun f4(): error/NonExistentClass + * + * // signature: f5(Lerror/NonExistentClass;Ljava/lang/String;)V + * public final fun f5(a: error/NonExistentClass, b: kotlin/String (* = ... *)): kotlin/Unit + * + * // signature: overloads(Lerror/NonExistentClass;)V + * public final fun overloads(a: error/NonExistentClass): kotlin/Unit + * + * // signature: overloads(Ljava/lang/String;)V + * public final fun overloads(a: kotlin/String): kotlin/Unit + * + * // field: p1:Ljava/lang/String; + * // getter: getP1()Ljava/lang/String; + * // setter: setP1(Ljava/lang/String;)V + * public final lateinit var p1: kotlin/String + * public final get + * public final set + * + * // field: p2:Lerror/NonExistentClass; + * // getter: getP2()Lerror/NonExistentClass; + * // setter: setP2(Lerror/NonExistentClass;)V + * public final lateinit var p2: error/NonExistentClass + * public final get + * public final set + * + * // field: p3:Lerror/NonExistentClass; + * // getter: getP3()Lerror/NonExistentClass; + * // setter: setP3(Lerror/NonExistentClass;)V + * public final lateinit var p3: error/NonExistentClass + * public final get + * public final set + * + * // companion object: Companion + * + * // nested class: Companion + * + * // module name: main + * } + */ +@kotlin.Metadata() +public final class ErrorInDeclarations { + public java.lang.String p1; + public ABC p2; + public BCD p3; + @org.jetbrains.annotations.NotNull() + public static final ErrorInDeclarations.Companion Companion = null; + + public ErrorInDeclarations() { + super(); + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getP1() { + return null; + } + + public final void setP1(@org.jetbrains.annotations.NotNull() + java.lang.String p0) { + } + + @org.jetbrains.annotations.NotNull() + public final ABC getP2() { + return null; + } + + public final void setP2(@org.jetbrains.annotations.NotNull() + ABC p0) { + } + + @org.jetbrains.annotations.NotNull() + public final BCD getP3() { + return null; + } + + public final void setP3(@org.jetbrains.annotations.NotNull() + BCD p0) { + } + + public final void overloads(@org.jetbrains.annotations.NotNull() + java.lang.String a) { + } + + public final void overloads(@org.jetbrains.annotations.NotNull() + ABC a) { + } + + public final void f1(@org.jetbrains.annotations.NotNull() + java.lang.String a, @org.jetbrains.annotations.NotNull() + ABC> b) { + } + + public final void f2() { + } + + public final void f3() { + } + + @org.jetbrains.annotations.Nullable() + public final ABC f4() { + return null; + } + + @kotlin.jvm.JvmOverloads() + public final void f5(@org.jetbrains.annotations.NotNull() + ABC a) { + } + + @kotlin.jvm.JvmOverloads() + public final void f5(@org.jetbrains.annotations.NotNull() + ABC a, @org.jetbrains.annotations.NotNull() + java.lang.String b) { + } + + @kotlin.jvm.JvmStatic() + public static final void f6(@org.jetbrains.annotations.NotNull() + ABC a) { + } + + /** + * public final companion object ErrorInDeclarations.Companion : kotlin/Any { + * + * // signature: ()V + * private constructor() + * + * // signature: f6(Lerror/NonExistentClass;)V + * public final fun f6(a: error/NonExistentClass): kotlin/Unit + * + * // module name: main + * } + */ + @kotlin.Metadata() + public static final class Companion { + + private Companion() { + super(); + } + + @kotlin.jvm.JvmStatic() + public final void f6(@org.jetbrains.annotations.NotNull() + ABC a) { + } + } +} + +//////////////////// + + +import kotlin.reflect.KClass; + +/** + * public final class ErrorInSupertype : kotlin/Any { + * + * // signature: ()V + * public constructor() + * + * // module name: main + * } + */ +@kotlin.Metadata() +public final class ErrorInSupertype implements ABC { + + public ErrorInSupertype() { + super(); + } +} + +//////////////////// + + +import kotlin.reflect.KClass; + +/** + * public final class ErrorInSupertype2 : kotlin/Any { + * + * // signature: ()V + * public constructor() + * + * // module name: main + * } + */ +@kotlin.Metadata() +public final class ErrorInSupertype2 extends ABC { + + public ErrorInSupertype2() { + super(); + } +} diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.kt b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.kt index 908b6288604..d387a20a6e2 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.kt @@ -23,6 +23,14 @@ class ErrorInDeclarations { fun f2() {} fun f3() {} fun f4(): ABC? = null + + @JvmOverloads + fun f5(a: ABC, b: String = "") {} + + companion object { + @JvmStatic + fun f6(a: ABC) {} + } } annotation class Anno(val a: KClass) diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt index 73ea8734328..5bb37f62b2b 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/errorLocationMapping.txt @@ -127,6 +127,9 @@ import kotlin.reflect.KClass; * // signature: f4()Lerror/NonExistentClass; * public final fun f4(): error/NonExistentClass * + * // signature: f5(Lerror/NonExistentClass;Ljava/lang/String;)V + * public final fun f5(a: error/NonExistentClass, b: kotlin/String (* = ... *)): kotlin/Unit + * * // signature: overloads(Lerror/NonExistentClass;)V * public final fun overloads(a: error/NonExistentClass): kotlin/Unit * @@ -154,6 +157,10 @@ import kotlin.reflect.KClass; * public final get * public final set * + * // companion object: Companion + * + * // nested class: Companion + * * // module name: main * } */ @@ -162,6 +169,8 @@ public final class ErrorInDeclarations { public java.lang.String p1; public ABC p2; public BCD p3; + @org.jetbrains.annotations.NotNull() + public static final ErrorInDeclarations.Companion Companion = null; public ErrorInDeclarations() { super(); @@ -217,6 +226,47 @@ public final class ErrorInDeclarations { public final ABC f4() { return null; } + + @kotlin.jvm.JvmOverloads() + public final void f5(@org.jetbrains.annotations.NotNull() + error.NonExistentClass a) { + } + + @kotlin.jvm.JvmOverloads() + public final void f5(@org.jetbrains.annotations.NotNull() + ABC a, @org.jetbrains.annotations.NotNull() + java.lang.String b) { + } + + @kotlin.jvm.JvmStatic() + public static final void f6(@org.jetbrains.annotations.NotNull() + ABC a) { + } + + /** + * public final companion object ErrorInDeclarations.Companion : kotlin/Any { + * + * // signature: ()V + * private constructor() + * + * // signature: f6(Lerror/NonExistentClass;)V + * public final fun f6(a: error/NonExistentClass): kotlin/Unit + * + * // module name: main + * } + */ + @kotlin.Metadata() + public static final class Companion { + + private Companion() { + super(); + } + + @kotlin.jvm.JvmStatic() + public final void f6(@org.jetbrains.annotations.NotNull() + ABC a) { + } + } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.ir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.ir.txt deleted file mode 100644 index 93a64129933..00000000000 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.ir.txt +++ /dev/null @@ -1,138 +0,0 @@ -/** - * public final class State : kotlin/Any { - * - * // signature: (IJLjava/lang/String;)V - * public constructor(someInt: kotlin/Int, someLong: kotlin/Long, someString: kotlin/String (* = ... *)) - * - * // field: someInt:I - * // getter: getSomeInt()I - * public final val someInt: kotlin/Int - * public final get - * - * // field: someLong:J - * // getter: getSomeLong()J - * public final val someLong: kotlin/Long - * public final get - * - * // field: someString:Ljava/lang/String; - * // getter: getSomeString()Ljava/lang/String; - * public final val someString: kotlin/String - * public final get - * - * // module name: main - * } - */ -@kotlin.Metadata() -public final class State { - private final int someInt = 0; - private final long someLong = 0L; - @org.jetbrains.annotations.NotNull() - private final java.lang.String someString = null; - - @kotlin.jvm.JvmOverloads() - public State(int someInt, long someLong, @org.jetbrains.annotations.NotNull() - java.lang.String someString) { - super(); - } - - public final int getSomeInt() { - return 0; - } - - public final long getSomeLong() { - return 0L; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getSomeString() { - return null; - } - - @kotlin.jvm.JvmOverloads() - public State(int someInt, long someLong) { - super(); - } -} - -//////////////////// - - -/** - * public final class State2 : kotlin/Any { - * - * // signature: (IJLjava/lang/String;)V - * public constructor(someInt: kotlin/Int, someLong: kotlin/Long (* = ... *), someString: kotlin/String (* = ... *)) - * - * // signature: methodWithoutArgs()V - * public final fun methodWithoutArgs(): kotlin/Unit - * - * // signature: someMethod(Ljava/lang/String;)V - * public final fun someMethod(str: kotlin/String): kotlin/Unit - * - * // signature: test(IJLjava/lang/String;)I - * public final fun test(someInt: kotlin/Int, someLong: kotlin/Long (* = ... *), someString: kotlin/String (* = ... *)): kotlin/Int - * - * // field: someInt:I - * public final val someInt: kotlin/Int - * public final get - * - * // field: someLong:J - * public final val someLong: kotlin/Long - * public final get - * - * // field: someString:Ljava/lang/String; - * public final val someString: kotlin/String - * public final get - * - * // module name: main - * } - */ -@kotlin.Metadata() -public final class State2 { - @kotlin.jvm.JvmField() - public final int someInt = 0; - @kotlin.jvm.JvmField() - public final long someLong = 0L; - @kotlin.jvm.JvmField() - @org.jetbrains.annotations.NotNull() - public final java.lang.String someString = null; - - @kotlin.jvm.JvmOverloads() - public State2(int someInt, long someLong, @org.jetbrains.annotations.NotNull() - java.lang.String someString) { - super(); - } - - @kotlin.jvm.JvmOverloads() - public final int test(int someInt, long someLong, @org.jetbrains.annotations.NotNull() - java.lang.String someString) { - return 0; - } - - public final void someMethod(@org.jetbrains.annotations.NotNull() - java.lang.String str) { - } - - public final void methodWithoutArgs() { - } - - @kotlin.jvm.JvmOverloads() - public State2(int someInt) { - super(); - } - - @kotlin.jvm.JvmOverloads() - public State2(int someInt, long someLong) { - super(); - } - - @kotlin.jvm.JvmOverloads() - public final int test(int someInt) { - return 0; - } - - @kotlin.jvm.JvmOverloads() - public final int test(int someInt, long someLong) { - return 0; - } -} diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.kt b/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.kt index 1fdc8a2d0fa..75abdc2ad63 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.kt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/jvmOverloads.kt @@ -1,4 +1,3 @@ -// FIR_BLOCKED: support of @JvmOverloads in LC class State @JvmOverloads constructor( val someInt: Int, val someLong: Long, diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.ir.txt b/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.ir.txt index 03ca27c5ec2..45e6129a24a 100644 --- a/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.ir.txt +++ b/plugins/kapt3/kapt3-compiler/testData/converter/modifiers.ir.txt @@ -93,13 +93,6 @@ public final class Modifiers { public final strictfp void strictFp() { } - @kotlin.jvm.JvmOverloads() - @org.jetbrains.annotations.NotNull() - public final java.lang.String overloads(@org.jetbrains.annotations.NotNull() - java.lang.String a, int n) { - return null; - } - @kotlin.jvm.JvmOverloads() @org.jetbrains.annotations.NotNull() public final java.lang.String overloads() { @@ -112,6 +105,13 @@ public final class Modifiers { java.lang.String a) { return null; } + + @kotlin.jvm.JvmOverloads() + @org.jetbrains.annotations.NotNull() + public final java.lang.String overloads(@org.jetbrains.annotations.NotNull() + java.lang.String a, int n) { + return null; + } } //////////////////// diff --git a/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Overloads.it.ir.txt b/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Overloads.it.ir.txt deleted file mode 100644 index 385a672a9b8..00000000000 --- a/plugins/kapt3/kapt3-compiler/testData/kotlinRunner/Overloads.it.ir.txt +++ /dev/null @@ -1,50 +0,0 @@ -package error; - -public final class NonExistentClass { -} - -//////////////////// - -package test; - -@MyAnnotation() -@kotlin.Metadata() -public final class State { - private final int someInt = 0; - private final long someLong = 0L; - @org.jetbrains.annotations.NotNull() - private final java.lang.String someString = null; - - @kotlin.jvm.JvmOverloads() - public State(int someInt, long someLong, @org.jetbrains.annotations.NotNull() - java.lang.String someString) { - super(); - } - - public final int getSomeInt() { - return 0; - } - - public final long getSomeLong() { - return 0L; - } - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getSomeString() { - return null; - } - - @kotlin.jvm.JvmOverloads() - public State(int someInt, long someLong) { - super(); - } -} - -//////////////////// - -package test; - -@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME) -@kotlin.Metadata() -public abstract @interface MyAnnotation { -}