Arrays supported

This commit is contained in:
Andrey Breslav
2013-10-07 01:45:05 +04:00
parent e1e1428f4b
commit 00fd00e09b
4 changed files with 680 additions and 421 deletions
@@ -1,272 +1,74 @@
<root>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Method)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor void visitOuterClass(java.lang.String, java.lang.String, java.lang.String) 0'>
<item name='org.objectweb.asm.AnnotationVisitor org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...) 3'>
<item name='org.objectweb.asm.AnnotationVisitor void visit(java.lang.String, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter int newMethodType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putInt(int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader java.lang.String[] getInterfaces()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter java.lang.String getCommonSuperClass(java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Attribute org.objectweb.asm.ByteVector write(org.objectweb.asm.ClassWriter, byte[], int, int, int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type CHAR_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 1'>
<item name='org.objectweb.asm.AnnotationVisitor void visitEnum(java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Opcodes NULL'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader void accept(org.objectweb.asm.ClassVisitor, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes TOP'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes DOUBLE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type INT_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newHandle(int, java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type SHORT_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putByteArray(byte[], int, int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.Class&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type java.lang.String getMethodDescriptor(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes FLOAT'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter void visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putUTF8(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getInternalName()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter int newNameType(java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newInvokeDynamic(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.AnnotationVisitor void visitEnum(java.lang.String, java.lang.String, java.lang.String) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Opcodes INTEGER'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor void visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Attribute org.objectweb.asm.Attribute read(org.objectweb.asm.ClassReader, int, int, char[], int, org.objectweb.asm.Label[])'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(org.objectweb.asm.Type, org.objectweb.asm.Type...)'>
<item name='org.objectweb.asm.Attribute org.objectweb.asm.Attribute read(org.objectweb.asm.ClassReader, int, int, char[], int, org.objectweb.asm.Label[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type BYTE_TYPE'>
<item name='org.objectweb.asm.Attribute org.objectweb.asm.ByteVector write(org.objectweb.asm.ClassWriter, byte[], int, int, int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String) 3'>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putByte(int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Constructor&lt;?&gt;) 0'>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putByteArray(byte[], int, int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putInt(int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putLong(long)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putShort(int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putUTF8(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putUTF8(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader ClassReader(byte[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader ClassReader(java.io.InputStream) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader ClassReader(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(int, java.lang.String, boolean) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 2'>
<item name='org.objectweb.asm.ClassReader java.lang.String[] getInterfaces()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.reflect.Method)'>
<item name='org.objectweb.asm.ClassReader org.objectweb.asm.Label readLabel(int, org.objectweb.asm.Label[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getElementType()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.reflect.Method)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter java.lang.String getCommonSuperClass(java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitJumpInsn(int, org.objectweb.asm.Label) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter int newMethod(java.lang.String, java.lang.String, java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newField(java.lang.String, java.lang.String, java.lang.String) 0'>
<item name='org.objectweb.asm.ClassReader void accept(org.objectweb.asm.ClassVisitor, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader void accept(org.objectweb.asm.ClassVisitor, org.objectweb.asm.Attribute[], int) 0'>
@@ -278,172 +80,25 @@
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 0'>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTypeInsn(int, java.lang.String) 1'>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type java.lang.String getDescriptor(java.lang.Class&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Attribute org.objectweb.asm.Attribute read(org.objectweb.asm.ClassReader, int, int, char[], int, org.objectweb.asm.Label[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putShort(int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(org.objectweb.asm.Type, org.objectweb.asm.Type...) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getMethodDescriptor(org.objectweb.asm.Type, org.objectweb.asm.Type...) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type int getArgumentsAndReturnSizes(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Constructor&lt;?&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.AnnotationVisitor void visitEnum(java.lang.String, java.lang.String, java.lang.String) 1'>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter int newInvokeDynamic(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putLong(long)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.Class&lt;?&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader org.objectweb.asm.Label readLabel(int, org.objectweb.asm.Label[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type java.lang.String getInternalName(java.lang.Class&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Opcodes LONG'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter ClassWriter(org.objectweb.asm.ClassReader, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLineNumber(int, org.objectweb.asm.Label) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type java.lang.String getMethodDescriptor(org.objectweb.asm.Type, org.objectweb.asm.Type...) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.FieldVisitor org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitMultiANewArrayInsn(java.lang.String, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter void visitOuterClass(java.lang.String, java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.FieldVisitor void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLabel(org.objectweb.asm.Label) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader ClassReader(java.io.InputStream) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter void visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type LONG_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.AnnotationVisitor void visit(java.lang.String, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putByte(int)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ByteVector org.objectweb.asm.ByteVector putUTF8(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 3'>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
@@ -455,68 +110,215 @@
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]) 0'>
<item name='org.objectweb.asm.ClassVisitor void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 1'>
<item name='org.objectweb.asm.ClassVisitor void visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.AnnotationVisitor org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, java.lang.String) 1'>
<item name='org.objectweb.asm.ClassVisitor void visitOuterClass(java.lang.String, java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type DOUBLE_TYPE'>
<item name='org.objectweb.asm.ClassWriter ClassWriter(org.objectweb.asm.ClassReader, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes UNINITIALIZED_THIS'>
<item name='org.objectweb.asm.ClassWriter int newClass(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassReader ClassReader(byte[]) 0'>
<item name='org.objectweb.asm.ClassWriter int newConst(java.lang.Object) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type FLOAT_TYPE'>
<item name='org.objectweb.asm.ClassWriter int newField(java.lang.String, java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLdcInsn(java.lang.Object) 0'>
<item name='org.objectweb.asm.ClassWriter int newHandle(int, java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(org.objectweb.asm.Type, org.objectweb.asm.Type...) 1'>
<item name='org.objectweb.asm.ClassWriter int newInvokeDynamic(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newInvokeDynamic(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newMethod(java.lang.String, java.lang.String, java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newMethodType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newNameType(java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter int newUTF8(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter java.lang.String getCommonSuperClass(java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter java.lang.String getCommonSuperClass(java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.FieldVisitor visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter void visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassWriter void visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter void visitOuterClass(java.lang.String, java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.FieldVisitor org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.FieldVisitor void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String, boolean) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(int, java.lang.String, boolean) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitAttribute(org.objectweb.asm.Attribute) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type BOOLEAN_TYPE'>
<item name='org.objectweb.asm.MethodVisitor void visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type VOID_TYPE'>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getObjectType(java.lang.String)'>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitJumpInsn(int, org.objectweb.asm.Label) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLabel(org.objectweb.asm.Label) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLdcInsn(java.lang.Object) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLineNumber(int, org.objectweb.asm.Label) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int) 4'>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -524,8 +326,11 @@
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Type java.lang.String getConstructorDescriptor(java.lang.reflect.Constructor&lt;?&gt;) 0'>
<item name='org.objectweb.asm.MethodVisitor void visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
@@ -533,19 +338,217 @@
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter int newConst(java.lang.Object) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.ClassVisitor org.objectweb.asm.MethodVisitor visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) 2'>
<item name='org.objectweb.asm.MethodVisitor void visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[]) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.ClassWriter int newClass(java.lang.String) 0'>
<item name='org.objectweb.asm.MethodVisitor void visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitMultiANewArrayInsn(java.lang.String, int) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...) 3'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.MethodVisitor void visitTypeInsn(int, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
<annotation name='org.jetbrains.kannotator.runtime.annotations.Propagated'>
<val name="value" val="{org.jetbrains.kannotator.controlFlow.builder.analysis.NullabilityKey.class}"/>
</annotation>
</item>
<item name='org.objectweb.asm.Opcodes DOUBLE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes FLOAT'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes INTEGER'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes LONG'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes NULL'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes TOP'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Opcodes UNINITIALIZED_THIS'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type BOOLEAN_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type BYTE_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type CHAR_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type DOUBLE_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type FLOAT_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type INT_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type LONG_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type SHORT_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type VOID_TYPE'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type int getArgumentsAndReturnSizes(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getConstructorDescriptor(java.lang.reflect.Constructor&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getDescriptor()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getDescriptor(java.lang.Class&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getInternalName()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getInternalName(java.lang.Class&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getMethodDescriptor(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getMethodDescriptor(org.objectweb.asm.Type, org.objectweb.asm.Type...) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type java.lang.String getMethodDescriptor(org.objectweb.asm.Type, org.objectweb.asm.Type...) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getElementType()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(org.objectweb.asm.Type, org.objectweb.asm.Type...)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(org.objectweb.asm.Type, org.objectweb.asm.Type...) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getMethodType(org.objectweb.asm.Type, org.objectweb.asm.Type...) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getObjectType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getObjectType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.reflect.Method)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getReturnType(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.Class&lt;?&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.Class&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Constructor&lt;?&gt;)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Constructor&lt;?&gt;) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Method)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type getType(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.reflect.Method)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='org.objectweb.asm.Type org.objectweb.asm.Type[] getArgumentTypes(java.lang.reflect.Method) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -0,0 +1,16 @@
package org.jetbrains.eval4j.test;
import java.lang.reflect.Array;
public class ArrayHelper {
public static Object newMultiArray(Class<?> elementType, Integer... dimensions) {
int[] dims = new int[dimensions.length];
int i = 0;
for (Integer dimension : dimensions) {
dims[i] = dimension;
i++;
}
return Array.newInstance(elementType, dims);
}
}
@@ -277,4 +277,184 @@ class TestData {
}
return 0;
}
static Class<?> arrayClass() {
return int[].class;
}
static int arrayOfByte() {
byte[] a = new byte[] {1, 2, 3};
int sum = 0;
for (int i : a) {
sum += i;
}
return sum;
}
static int arrayOfShort() {
short[] a = new short[] {1, 2, 3};
int sum = 0;
for (int i : a) {
sum += i;
}
return sum;
}
static int arrayOfChar() {
char[] a = new char[] {1, 2, 3};
int sum = 0;
for (int i : a) {
sum += i;
}
return sum;
}
static int arrayOfInt() {
int[] a = new int[] {1, 2, 3};
int sum = 0;
for (int i : a) {
sum += i;
}
return sum;
}
static int arrayOfLong() {
long[] a = new long[] {1, 2, 3};
int sum = 0;
for (long i : a) {
sum += i;
}
return sum;
}
static float arrayOfFloat() {
float[] a = new float[] {1, 2, 3};
float sum = 0;
for (float i : a) {
sum += i;
}
return sum;
}
static double arrayOfDouble() {
double[] a = new double[] {1, 2, 3};
double sum = 0;
for (double i : a) {
sum += i;
}
return sum;
}
static String arrayOfString() {
String[] a = new String[] {"1", "2", "3"};
String sum = "";
for (String i : a) {
sum += i;
}
return sum;
}
static int arrayOfByte2() {
byte[][] a = new byte[][] {{1}, {2}, {3}};
int sum = 0;
for (byte[] aa: a)
for (int i : aa) {
sum += i;
}
return sum;
}
static int arrayOfShort2() {
short[][] a = new short[][] {{1}, {2}, {3}};
int sum = 0;
for (short[] aa: a)
for (int i : aa) {
sum += i;
}
return sum;
}
static int arrayOfChar2() {
char[][] a = new char[][] {{1}, {2}, {3}};
int sum = 0;
for (char[] aa: a)
for (int i : aa) {
sum += i;
}
return sum;
}
static int arrayOfInt2() {
int[][] a = new int[][] {{1}, {2}, {3}};
int sum = 0;
for (int[] aa: a)
for (int i : aa) {
sum += i;
}
return sum;
}
static int arrayOfLong2() {
long[][] a = new long[][] {{1}, {2}, {3}};
int sum = 0;
for (long[] aa: a)
for (long i : aa) {
sum += i;
}
return sum;
}
static float arrayOfFloat2() {
float[][] a = new float[][] {{1}, {2}, {3}};
float sum = 0;
for (float[] aa: a)
for (float i : aa) {
sum += i;
}
return sum;
}
static double arrayOfDouble2() {
double[][] a = new double[][] {{1}, {2}, {3}};
double sum = 0;
for (double[] aa: a)
for (double i : aa) {
sum += i;
}
return sum;
}
static String arrayOfString2() {
String[][] a = new String[][] {{"1"}, {"2"}, {"3"}};
String sum = "";
for (String[] aa: a)
for (String i : aa) {
sum += i;
}
return sum;
}
static String multiArrayOfInt() {
int[][] a = new int[2][2];
String s = "";
for (int[] x : a)
for (int y : x) {
s += y;
}
return s;
}
static String multiArrayOfString() {
String[][] a = new String[2][2];
for (String[] x : a)
for (int i = 0; i < x.length; i++) {
x[i] = i + "";
}
String s = "";
for (String[] x : a)
for (String y : x) {
s += y;
}
return s;
}
}
+74 -14
View File
@@ -12,6 +12,7 @@ import java.lang.reflect.Method
import java.lang.reflect.Field
import java.lang.reflect.Constructor
import java.lang.reflect.InvocationTargetException
import java.lang.reflect.Array as JArray
fun suite(): TestSuite {
val suite = TestSuite()
@@ -102,35 +103,80 @@ object REFLECTION_EVAL : Eval {
val lookup = ReflectionLookup(javaClass<ReflectionLookup>().getClassLoader()!!)
override fun loadClass(classType: Type): Value {
return ObjectValue(findClass(classType.getInternalName()), Type.getType(javaClass<Class<*>>()))
return ObjectValue(findClass(classType), Type.getType(javaClass<Class<*>>()))
}
override fun loadString(str: String): Value = ObjectValue(str, Type.getType(javaClass<String>()))
override fun newInstance(classType: Type): Value {
val _class = findClass(classType.getInternalName())
val _class = findClass(classType)
return NewObjectValue(_class, classType)
}
override fun isInstanceOf(value: Value, targetType: Type): Boolean {
val _class = findClass(targetType.getInternalName())
val _class = findClass(targetType)
return _class.isInstance(value.obj)
}
[suppress("UNCHECKED_CAST")]
override fun newArray(arrayType: Type, size: Int): Value {
throw UnsupportedOperationException()
return ObjectValue(JArray.newInstance(findClass(arrayType).getComponentType() as Class<Any>, size), arrayType)
}
override fun newMultiDimensionalArray(arrayType: Type, dimensionSizes: List<Int>): Value {
throw UnsupportedOperationException()
return ObjectValue(ArrayHelper.newMultiArray(findClass(arrayType.getElementType()), *dimensionSizes.copyToArray()), arrayType)
}
override fun getArrayLength(array: Value): Value {
throw UnsupportedOperationException()
return int(JArray.getLength(array.obj.checkNull()))
}
override fun getArrayElement(array: Value, index: Value): Value {
throw UnsupportedOperationException()
val asmType = array.asmType
val elementType = if (asmType.getDimensions() == 1) asmType.getElementType() else Type.getType(asmType.getDescriptor().substring(1))
val arr = array.obj.checkNull()
val ind = index.int
return when (elementType.getSort()) {
Type.BOOLEAN -> boolean(JArray.getBoolean(arr, ind))
Type.BYTE -> byte(JArray.getByte(arr, ind))
Type.SHORT -> short(JArray.getShort(arr, ind))
Type.CHAR -> char(JArray.getChar(arr, ind))
Type.INT -> int(JArray.getInt(arr, ind))
Type.LONG -> long(JArray.getLong(arr, ind))
Type.FLOAT -> float(JArray.getFloat(arr, ind))
Type.DOUBLE -> double(JArray.getDouble(arr, ind))
Type.OBJECT,
Type.ARRAY -> {
val value = JArray.get(arr, ind)
if (value == null) NULL_VALUE else ObjectValue(value, Type.getType(value.javaClass))
}
else -> throw UnsupportedOperationException("Unsupported array element type: $elementType")
}
}
override fun setArrayElement(array: Value, index: Value, newValue: Value) {
throw UnsupportedOperationException()
val arr = array.obj.checkNull()
val ind = index.int
if (array.asmType.getDimensions() > 1) {
JArray.set(arr, ind, newValue.obj)
return
}
val elementType = array.asmType.getElementType()
when (elementType.getSort()) {
Type.BOOLEAN -> JArray.setBoolean(arr, ind, newValue.boolean)
Type.BYTE -> JArray.setByte(arr, ind, newValue.int.toByte())
Type.SHORT -> JArray.setShort(arr, ind, newValue.int.toShort())
Type.CHAR -> JArray.setChar(arr, ind, newValue.int.toChar())
Type.INT -> JArray.setInt(arr, ind, newValue.int)
Type.LONG -> JArray.setLong(arr, ind, newValue.long)
Type.FLOAT -> JArray.setFloat(arr, ind, newValue.float)
Type.DOUBLE -> JArray.setDouble(arr, ind, newValue.double)
Type.OBJECT,
Type.ARRAY -> {
JArray.set(arr, ind, newValue.obj)
}
else -> throw UnsupportedOperationException("Unsupported array element type: $elementType")
}
}
fun <T> mayThrow(f: () -> T): T {
@@ -184,12 +230,12 @@ object REFLECTION_EVAL : Eval {
return objectToValue(result, methodDesc.returnType)
}
fun findClass(memberDesc: MemberDescription): Class<Any> = findClass(memberDesc.ownerInternalName)
fun findClass(memberDesc: MemberDescription): Class<Any> = findClass(Type.getObjectType(memberDesc.ownerInternalName))
fun findClass(internalName: String): Class<Any> {
val owner = lookup.findClass(internalName)
assertNotNull("Class not found: ${internalName}", owner)
return owner!!
fun findClass(asmType: Type): Class<Any> {
val owner = lookup.findClass(asmType)
assertNotNull("Class not found: ${asmType}", owner)
return owner as Class<Any>
}
override fun getField(instance: Value, fieldDesc: FieldDescription): Value {
@@ -243,7 +289,21 @@ object REFLECTION_EVAL : Eval {
class ReflectionLookup(val classLoader: ClassLoader) {
[suppress("UNCHECKED_CAST")]
fun findClass(internalName: String): Class<Any>? = classLoader.loadClass(internalName.replace('/', '.')) as Class<Any>
fun findClass(asmType: Type): Class<*>? {
return when (asmType.getSort()) {
Type.BOOLEAN -> java.lang.Boolean.TYPE
Type.BYTE -> java.lang.Byte.TYPE
Type.SHORT -> java.lang.Short.TYPE
Type.CHAR -> java.lang.Character.TYPE
Type.INT -> java.lang.Integer.TYPE
Type.LONG -> java.lang.Long.TYPE
Type.FLOAT -> java.lang.Float.TYPE
Type.DOUBLE -> java.lang.Double.TYPE
Type.OBJECT -> classLoader.loadClass(asmType.getInternalName().replace('/', '.'))
Type.ARRAY -> Class.forName(asmType.getDescriptor().replace('/', '.'))
else -> throw UnsupportedOperationException("Unsupported type: $asmType")
}
}
}
[suppress("UNCHECKED_CAST")]