Generating annotations in correct order for methods with synthetic parameters.

#KT-4050 fixed
This commit is contained in:
Evgeny Gerashchenko
2013-10-08 00:18:03 +04:00
parent e401be7ee6
commit 9c38716829
7 changed files with 311 additions and 233 deletions
@@ -121,7 +121,7 @@ public class FunctionCodegen extends GenerationStateAware {
AnnotationCodegen.forMethod(mv, typeMapper).genAnnotations(functionDescriptor); AnnotationCodegen.forMethod(mv, typeMapper).genAnnotations(functionDescriptor);
if (state.getClassBuilderMode() == ClassBuilderMode.SIGNATURES) return; if (state.getClassBuilderMode() == ClassBuilderMode.SIGNATURES) return;
generateParameterAnnotations(functionDescriptor, mv); generateParameterAnnotations(functionDescriptor, mv, jvmSignature);
generateJetValueParameterAnnotations(mv, functionDescriptor, jvmSignature); generateJetValueParameterAnnotations(mv, functionDescriptor, jvmSignature);
@@ -141,9 +141,25 @@ public class FunctionCodegen extends GenerationStateAware {
methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, typeMapper); methodContext.recordSyntheticAccessorIfNeeded(functionDescriptor, typeMapper);
} }
private void generateParameterAnnotations(@NotNull FunctionDescriptor functionDescriptor, @NotNull MethodVisitor mv) { private void generateParameterAnnotations(
for (ValueParameterDescriptor parameter : functionDescriptor.getValueParameters()) { @NotNull FunctionDescriptor functionDescriptor,
AnnotationCodegen.forParameter(parameter.getIndex(), mv, typeMapper).genAnnotations(parameter); @NotNull MethodVisitor mv,
@NotNull JvmMethodSignature jvmSignature
) {
Iterator<ValueParameterDescriptor> iterator = functionDescriptor.getValueParameters().iterator();
List<JvmMethodParameterSignature> kotlinParameterTypes = jvmSignature.getKotlinParameterTypes();
for (int i = 0; i < kotlinParameterTypes.size(); i++) {
JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind();
if (kind == JvmMethodParameterKind.ENUM_NAME || kind == JvmMethodParameterKind.ENUM_ORDINAL) {
markEnumConstructorParameterAsSynthetic(mv, i);
continue;
}
if (kind == JvmMethodParameterKind.VALUE) {
ValueParameterDescriptor parameter = iterator.next();
AnnotationCodegen.forParameter(i, mv, typeMapper).genAnnotations(parameter);
}
} }
} }
@@ -159,8 +175,7 @@ public class FunctionCodegen extends GenerationStateAware {
for (int i = 0; i < kotlinParameterTypes.size(); i++) { for (int i = 0; i < kotlinParameterTypes.size(); i++) {
JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind(); JvmMethodParameterKind kind = kotlinParameterTypes.get(i).getKind();
if (kind == JvmMethodParameterKind.ENUM_NAME || kind == JvmMethodParameterKind.ENUM_ORDINAL) { if (kind == JvmMethodParameterKind.ENUM_NAME || kind == JvmMethodParameterKind.ENUM_ORDINAL) {
// We shouldn't generate annotations for invisible in runtime parameters otherwise we get bad markEnumConstructorParameterAsSynthetic(mv, i);
// RuntimeInvisibleParameterAnnotations error in javac
continue; continue;
} }
@@ -199,6 +214,14 @@ public class FunctionCodegen extends GenerationStateAware {
} }
} }
private static void markEnumConstructorParameterAsSynthetic(MethodVisitor mv, int i) {
// This is needed to avoid RuntimeInvisibleParameterAnnotations error in javac:
// see MethodWriter.visitParameterAnnotation()
AnnotationVisitor av = mv.visitParameterAnnotation(i, "Ljava/lang/Synthetic;", true);
av.visitEnd();
}
@Nullable @Nullable
private Type getThisTypeForFunction(@NotNull FunctionDescriptor functionDescriptor, @NotNull MethodContext context) { private Type getThisTypeForFunction(@NotNull FunctionDescriptor functionDescriptor, @NotNull MethodContext context) {
ReceiverParameterDescriptor expectedThisObject = functionDescriptor.getExpectedThisObject(); ReceiverParameterDescriptor expectedThisObject = functionDescriptor.getExpectedThisObject();
@@ -0,0 +1,7 @@
package test;
public class kt4050 {
public static void main(String[] args) {
MyEnum.ENTRY.getOrd();
}
}
@@ -0,0 +1,9 @@
package test
enum class MyEnum(deprecated("") val ord: Int) {
ENTRY: MyEnum(239)
fun f(Deprecated p: Int) {
}
}
@@ -107,6 +107,16 @@ public class AnnotationGenTest extends CodegenTestCase {
assertNotNull(getDeprecatedAnnotationFromList(annotations)); assertNotNull(getDeprecatedAnnotationFromList(annotations));
} }
public void testAnnotationForParamInInstanceExtensionFunction() throws NoSuchFieldException, NoSuchMethodException {
loadText("class A() { fun String.x([Deprecated] i: Int) {}}");
Class<?> aClass = generateClass("A");
Method x = aClass.getMethod("x", String.class, int.class);
assertNotNull(x);
// Get annotations for first real parameter
Annotation[] annotations = x.getParameterAnnotations()[1];
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testParamInConstructor() throws NoSuchFieldException, NoSuchMethodException { public void testParamInConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("class A ([Deprecated] x: Int) {}"); loadText("class A ([Deprecated] x: Int) {}");
Class<?> aClass = generateClass("A"); Class<?> aClass = generateClass("A");
@@ -117,6 +127,27 @@ public class AnnotationGenTest extends CodegenTestCase {
assertNotNull(getDeprecatedAnnotationFromList(annotations)); assertNotNull(getDeprecatedAnnotationFromList(annotations));
} }
public void testParamInEnumConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("enum class E([Deprecated] p: String)");
Class<?> klass = generateClass("E");
Constructor constructor = klass.getDeclaredConstructor(String.class, int.class, String.class);
assertNotNull(constructor);
// Get annotations for first parameter
Annotation[] annotations = constructor.getParameterAnnotations()[0];
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testParamInInnerConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("class Outer { inner class Inner([Deprecated] x: Int) }");
Class<?> outer = generateClass("Outer");
Class<?> inner = outer.getDeclaredClasses()[0];
Constructor constructor = inner.getDeclaredConstructor(outer, int.class);
assertNotNull(constructor);
// Get annotations for first real parameter
Annotation[] annotations = constructor.getParameterAnnotations()[1];
assertNotNull(getDeprecatedAnnotationFromList(annotations));
}
public void testPropFieldInConstructor() throws NoSuchFieldException, NoSuchMethodException { public void testPropFieldInConstructor() throws NoSuchFieldException, NoSuchMethodException {
loadText("class A ([Deprecated] var x: Int) {}"); loadText("class A ([Deprecated] var x: Int) {}");
Class<?> aClass = generateClass("A"); Class<?> aClass = generateClass("A");
@@ -78,6 +78,11 @@ public class CompileJavaAgainstKotlinTestGenerated extends AbstractCompileJavaAg
doTest("compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt"); doTest("compiler/testData/compileJavaAgainstKotlin/class/kt3561.kt");
} }
@TestMetadata("kt4050.kt")
public void testKt4050() throws Exception {
doTest("compiler/testData/compileJavaAgainstKotlin/class/kt4050.kt");
}
@TestMetadata("Simple.kt") @TestMetadata("Simple.kt")
public void testSimple() throws Exception { public void testSimple() throws Exception {
doTest("compiler/testData/compileJavaAgainstKotlin/class/Simple.kt"); doTest("compiler/testData/compileJavaAgainstKotlin/class/Simple.kt");
+229 -226
View File
@@ -1,230 +1,233 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<root> <root>
<item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;)"> <item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" <val name="value"
val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/> val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;) 0"> <item name="java.lang.reflect.AccessibleObject T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.AccessibleObject boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0"> <item name="java.lang.reflect.AccessibleObject boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getAnnotations()"> <item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/> <val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getDeclaredAnnotations()"> <item name="java.lang.reflect.AccessibleObject java.lang.annotation.Annotation[] getDeclaredAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/> <val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean)"> <item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean)">
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" <val name="value"
val="&quot;fun setAccessible(array : Array&lt;out AccessibleObject&gt;, flag : Boolean) : Unit&quot;"/> val="&quot;fun setAccessible(array : Array&lt;out AccessibleObject&gt;, flag : Boolean) : Unit&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean) 0"> <item name="java.lang.reflect.AccessibleObject void setAccessible(java.lang.reflect.AccessibleObject[], boolean) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;)"> <item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" <val name="value"
val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/> val="&quot;fun &lt;T : Annotation&gt; getAnnotation(annotationClass : Class&lt;T&gt;) : T?&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;) 0"> <item name="java.lang.reflect.AnnotatedElement T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;)"> <item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;)">
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" <val name="value"
val="&quot;fun isAnnotationPresent(annotationClass : Class&lt;out Annotation&gt;) : Boolean&quot;"/> val="&quot;fun isAnnotationPresent(annotationClass : Class&lt;out Annotation&gt;) : Boolean&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0"> <item name="java.lang.reflect.AnnotatedElement boolean isAnnotationPresent(java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getAnnotations()"> <item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/> <val name="value" val="&quot;fun getAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getDeclaredAnnotations()"> <item name="java.lang.reflect.AnnotatedElement java.lang.annotation.Annotation[] getDeclaredAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/> <val name="value" val="&quot;fun getDeclaredAnnotations() : Array&lt;out Annotation&gt;&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.Array boolean getBoolean(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array boolean getBoolean(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array byte getByte(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array byte getByte(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array char getChar(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array char getChar(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array double getDouble(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array double getDouble(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array float getFloat(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array float getFloat(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array int getInt(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array int getInt(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array int getLength(java.lang.Object) 0"> <item name="java.lang.reflect.Array int getLength(java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array java.lang.Object get(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array java.lang.Object get(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int)"> <item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int)">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" <val name="value"
val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, length : Int) : Any&quot;"/> val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, length : Int) : Any&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int) 0"> <item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...)"> <item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...)">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" <val name="value"
val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, vararg dimensions : Int) : Any&quot;"/> val="&quot;fun newInstance(componentType : Class&lt;out Any&gt;, vararg dimensions : Int) : Any&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 0"> <item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 1"> <item name="java.lang.reflect.Array java.lang.Object newInstance(java.lang.Class&lt;?&gt;, int...) 1">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array long getLong(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array long getLong(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array short getShort(java.lang.Object, int) 0"> <item name="java.lang.reflect.Array short getShort(java.lang.Object, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void set(java.lang.Object, int, java.lang.Object) 0"> <item name="java.lang.reflect.Array void set(java.lang.Object, int, java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setBoolean(java.lang.Object, int, boolean) 0"> <item name="java.lang.reflect.Array void setBoolean(java.lang.Object, int, boolean) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setByte(java.lang.Object, int, byte) 0"> <item name="java.lang.reflect.Array void setByte(java.lang.Object, int, byte) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setChar(java.lang.Object, int, char) 0"> <item name="java.lang.reflect.Array void setChar(java.lang.Object, int, char) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setDouble(java.lang.Object, int, double) 0"> <item name="java.lang.reflect.Array void setDouble(java.lang.Object, int, double) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setFloat(java.lang.Object, int, float) 0"> <item name="java.lang.reflect.Array void setFloat(java.lang.Object, int, float) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setInt(java.lang.Object, int, int) 0"> <item name="java.lang.reflect.Array void setInt(java.lang.Object, int, int) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setLong(java.lang.Object, int, long) 0"> <item name="java.lang.reflect.Array void setLong(java.lang.Object, int, long) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Array void setShort(java.lang.Object, int, short) 0"> <item name="java.lang.reflect.Array void setShort(java.lang.Object, int, short) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name='java.lang.reflect.Constructor T newInstance(java.lang.Object...)'> <item name="java.lang.reflect.Constructor T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name='org.jetbrains.annotations.NotNull'/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Constructor T getAnnotation(java.lang.Class&lt;T&gt;) 0"> <item name='java.lang.reflect.Constructor T newInstance(java.lang.Object...)'>
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name='org.jetbrains.annotations.NotNull'/>
</item> </item>
<item name="java.lang.reflect.Constructor java.lang.Class&lt;T&gt; getDeclaringClass()"> <item name="java.lang.reflect.Constructor java.lang.Class&lt;T&gt; getDeclaringClass()">
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out T&gt;&quot;"/> <val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out T&gt;&quot;"/>
</annotation> </annotation>
</item> </item>
<item name="java.lang.reflect.Constructor java.lang.String getName()"> <item name="java.lang.reflect.Constructor java.lang.String getName()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Constructor java.lang.String toGenericString()"> <item name="java.lang.reflect.Constructor java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Constructor java.lang.String toString()"> <item name="java.lang.reflect.Constructor java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Constructor java.lang.annotation.Annotation[][] getParameterAnnotations()"> <item name="java.lang.reflect.Constructor java.lang.annotation.Annotation[][] getParameterAnnotations()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> <annotation name='jet.runtime.typeinfo.KotlinSignature'>
<item name="java.lang.reflect.Field T getAnnotation(java.lang.Class&lt;T&gt;) 0"> <val name="value" val="&quot;fun getParameterAnnotations(): Array&lt;Array&lt;Annotation&gt;&gt;&quot;"/>
<annotation name="org.jetbrains.annotations.NotNull"/> </annotation>
</item> </item>
<item name="java.lang.reflect.Field java.lang.String toGenericString()"> <item name="java.lang.reflect.Field T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Field java.lang.String toString()"> <item name="java.lang.reflect.Field java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.GenericDeclaration java.lang.reflect.TypeVariable&lt;?&gt;[] getTypeParameters()"> <item name="java.lang.reflect.Field java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> </item>
<val name="value" <item name="java.lang.reflect.GenericDeclaration java.lang.reflect.TypeVariable&lt;?&gt;[] getTypeParameters()">
val="&quot;fun getTypeParameters() : Array&lt;out TypeVariable&lt;out GenericDeclaration?&gt;?&gt;&quot;"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</annotation> <annotation name="jet.runtime.typeinfo.KotlinSignature">
</item> <val name="value"
<item name="java.lang.reflect.InvocationHandler java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) 1"> val="&quot;fun getTypeParameters() : Array&lt;out TypeVariable&lt;out GenericDeclaration?&gt;?&gt;&quot;"/>
<annotation name="org.jetbrains.annotations.NotNull"/> </annotation>
</item> </item>
<item name="java.lang.reflect.Member java.lang.Class&lt;?&gt; getDeclaringClass()"> <item name="java.lang.reflect.InvocationHandler java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) 1">
<annotation name="jet.runtime.typeinfo.KotlinSignature"> <annotation name="org.jetbrains.annotations.NotNull"/>
<val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out Any&gt;&quot;"/> </item>
</annotation> <item name="java.lang.reflect.Member java.lang.Class&lt;?&gt; getDeclaringClass()">
</item> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<item name="java.lang.reflect.Method T getAnnotation(java.lang.Class&lt;T&gt;) 0"> <val name="value" val="&quot;fun getDeclaringClass() : Class&lt;out Any&gt;&quot;"/>
<annotation name="org.jetbrains.annotations.NotNull"/> </annotation>
</item> </item>
<item name="java.lang.reflect.Method java.lang.String toGenericString()"> <item name="java.lang.reflect.Method T getAnnotation(java.lang.Class&lt;T&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Method java.lang.String toString()"> <item name="java.lang.reflect.Method java.lang.String toGenericString()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Method java.lang.annotation.Annotation[][] getParameterAnnotations()"> <item name="java.lang.reflect.Method java.lang.String toString()">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
<annotation name="jet.runtime.typeinfo.KotlinSignature"> </item>
<val name="value" val="&quot;fun getParameterAnnotations() : Array&lt;Array&lt;Annotation&gt;&gt;&quot;"/> <item name="java.lang.reflect.Method java.lang.annotation.Annotation[][] getParameterAnnotations()">
</annotation> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> <annotation name="jet.runtime.typeinfo.KotlinSignature">
<item name="java.lang.reflect.Modifier java.lang.String toString(int)"> <val name="value" val="&quot;fun getParameterAnnotations() : Array&lt;Array&lt;Annotation&gt;&gt;&quot;"/>
<annotation name="org.jetbrains.annotations.NotNull"/> </annotation>
</item> </item>
<item name="java.lang.reflect.Proxy boolean isProxyClass(java.lang.Class&lt;?&gt;) 0"> <item name="java.lang.reflect.Modifier java.lang.String toString(int)">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...)"> <item name="java.lang.reflect.Proxy boolean isProxyClass(java.lang.Class&lt;?&gt;) 0">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...) 1"> <item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...)">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 1"> <item name="java.lang.reflect.Proxy java.lang.Class&lt;?&gt; getProxyClass(java.lang.ClassLoader, java.lang.Class&lt;?&gt;...) 1">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 2"> <item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 1">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Proxy java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object) 0"> <item name="java.lang.reflect.Proxy java.lang.Object newProxyInstance(java.lang.ClassLoader, java.lang.Class&lt;?&gt;[], java.lang.reflect.InvocationHandler) 2">
<annotation name="org.jetbrains.annotations.NotNull"/> <annotation name="org.jetbrains.annotations.NotNull"/>
</item> </item>
<item name="java.lang.reflect.Proxy java.lang.reflect.InvocationHandler getInvocationHandler(java.lang.Object) 0">
<annotation name="org.jetbrains.annotations.NotNull"/>
</item>
</root> </root>