Render all annotations in type parameters tests

This commit is contained in:
Mikhael Bogdanov
2021-05-04 14:25:20 +02:00
committed by TeamCityServer
parent c98dba6aea
commit 6182228de8
29 changed files with 147 additions and 26 deletions
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -24,8 +24,10 @@ public final class foo/Kotlin : java/lang/Object {
public final void foo(foo.Bar s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, 0;
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Bar foo()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
@Lfoo/Ann2;([]) : METHOD_RETURN, 0;
@@ -36,8 +38,10 @@ public final class foo/Kotlin : java/lang/Object {
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, [
@Lfoo/Ann3;([]) : METHOD_FORMAL_PARAMETER 0, [0;
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Bar[] fooArray()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
@Lfoo/Ann2;([]) : METHOD_RETURN, [
@Lfoo/Ann3;([]) : METHOD_RETURN, [0;
@@ -47,8 +51,10 @@ public final class foo/Kotlin : java/lang/Object {
@Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, [
@Lfoo/Ann3;([]) : METHOD_FORMAL_PARAMETER 0, [[
@Lfoo/Ann4;([]) : METHOD_FORMAL_PARAMETER 0, [[0;
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Bar[][] fooArrayArray()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
@Lfoo/Ann2;([]) : METHOD_RETURN, [
@Lfoo/Ann3;([]) : METHOD_RETURN, [[
@@ -57,4 +63,5 @@ public final class foo/Kotlin : java/lang/Object {
public final void fooGeneric(foo.Bar s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, 0;
}
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -2,12 +2,15 @@ public final class foo/Kotlin$foo$1 : java/lang/Object {
void <init>()
public final foo.Kotlin foo()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
}
public final class foo/Kotlin : java/lang/Object {
public void <init>(java.lang.String s, java.lang.String p)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="123"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 1
private void <init>(java.lang.String s)
@Lfoo/TypeAnn;([name="private"]) : METHOD_FORMAL_PARAMETER 0, null
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -2,9 +2,11 @@ public final class foo/Kotlin : java/lang/Object {
public void <init>()
public final java.lang.Object foo(java.lang.String s, int x)
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="2"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public static java.lang.Object foo$default(foo.Kotlin p0, java.lang.String p1, int p2, int p3, java.lang.Object p4)
}
@@ -1,6 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -4,6 +4,8 @@ public final class foo/Kotlin : java/lang/Object {
public final void foo2(java.lang.String $this$foo2, java.lang.String s)
@Lfoo/TypeAnn;([name="ext"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="param"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 1
}
public abstract interface foo/TypeAnn : java/lang/Object, java/lang/annotation/Annotation {
@@ -1,6 +1,6 @@
// IGNORE_BACKEND: JVM_IR
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -6,6 +6,7 @@ final class foo/Kotlin$foo4$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions
public java.lang.Object invoke()
public final java.lang.String invoke()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
}
@@ -14,14 +15,17 @@ public final class foo/Kotlin : java/lang/Object {
public void <init>()
public final java.lang.String foo2()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final java.lang.String foo3()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final java.lang.String foo4()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
}
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -3,6 +3,7 @@ public final class foo/Kotlin$Inner : java/lang/Object {
public void <init>(foo.Kotlin this$0, java.lang.String s)
@Lfoo/TypeAnn;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public final class foo/Kotlin : java/lang/Object {
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
@@ -2,15 +2,23 @@ public final class foo/FooClass : java/lang/Object {
public void <init>()
public final java.lang.Object foo(java.lang.String s, int x)
@Lkotlin/jvm/JvmOverloads;([]) // invisible
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="2"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final java.lang.Object foo(java.lang.String s)
@Lkotlin/jvm/JvmOverloads;([]) // invisible
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final java.lang.Object foo()
@Lkotlin/jvm/JvmOverloads;([]) // invisible
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
public static java.lang.Object foo$default(foo.FooClass p0, java.lang.String p1, int p2, int p3, java.lang.Object p4)
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
@@ -1,14 +1,18 @@
public final class foo/Foo : java/lang/Object {
public final static foo.Foo INSTANCE
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
static void <clinit>()
private void <init>()
public final static java.lang.Object foo(java.lang.String s, int x)
@Lkotlin/jvm/JvmStatic;([])
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="2"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public final class foo/FooClass$Companion : java/lang/Object {
@@ -17,22 +21,29 @@ public final class foo/FooClass$Companion : java/lang/Object {
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public final java.lang.Object foo(java.lang.String s, int x)
@Lkotlin/jvm/JvmStatic;([])
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="2"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public final class foo/FooClass : java/lang/Object {
public final static foo.FooClass$Companion Companion
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
static void <clinit>()
public void <init>()
public final static java.lang.Object foo(java.lang.String s, int x)
@Lkotlin/jvm/JvmStatic;([])
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="return"]) : METHOD_RETURN, null
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="2"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public abstract interface foo/TypeAnn : java/lang/Object, java/lang/annotation/Annotation {
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -22,26 +22,34 @@ public final class foo/Kotlin : java/lang/Object {
public void <init>()
public final void foo(foo.Outer$Inner s)
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Outer$Inner foo()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
public final void fooArray(foo.Outer$Inner[] s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Outer$Inner[] fooArray()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
public final void fooArrayIn(java.lang.Object[] s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Outer$Inner[] fooArrayOut()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
public final void fooGenericIn(foo.Bar s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final void fooGenericOut(foo.Bar s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public final class foo/Outer$Inner : java/lang/Object {
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// WITH_RUNTIME
@@ -4,40 +4,51 @@ public final class foo/Kotlin$Companion : java/lang/Object {
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public final java.lang.String getCompanionVarProperty()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final java.lang.String getJvmStatic()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public static void getJvmStatic$annotations()
@Lkotlin/jvm/JvmStatic;([])
public final void setCompanionVarProperty(java.lang.String <set-?>)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, null // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final void setJvmStatic(java.lang.String <set-?>)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, null // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public final class foo/Kotlin : java/lang/Object {
public final static foo.Kotlin$Companion Companion
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
private static java.lang.String companionVarProperty
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : FIELD, null
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
private java.lang.String customSetter
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : FIELD, null
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
public java.lang.String jvmField
@Lkotlin/jvm/JvmField;([]) // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : FIELD, null
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
private static java.lang.String jvmStatic
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : FIELD, null
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
@@ -46,10 +57,12 @@ public final class foo/Kotlin : java/lang/Object {
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
private final java.lang.String valProp
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : FIELD, null
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
private java.lang.String varProp
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : FIELD, null
@Lfoo/TypeAnnBinary;([]) : FIELD, null // invisible
@@ -70,40 +83,49 @@ public final class foo/Kotlin : java/lang/Object {
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final java.lang.String getCustomSetter()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final static java.lang.String getJvmStatic()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final java.lang.String getLateinitProp()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final int getUnannotatedGetter()
public final java.lang.String getValProp()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final java.lang.String getVarProp()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="1"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final void setCustomSetter(java.lang.String field)
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final static void setJvmStatic(java.lang.String <set-?>)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, null // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final void setLateinitProp(java.lang.String <set-?>)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, null // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final void setVarProp(java.lang.String <set-?>)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, null // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public abstract interface foo/TypeAnn : java/lang/Object, java/lang/annotation/Annotation {
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -4,16 +4,20 @@ public final class foo/Kotlin : java/lang/Object {
public final void foo(java.lang.String s)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, null // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final java.lang.String foo2()
@Lorg/jetbrains/annotations/NotNull;([]) // invisible
@Lfoo/TypeAnn;([name="2"]) : METHOD_RETURN, null
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, null // invisible
public final void fooArray(java.lang.String[] s)
@Lfoo/TypeAnn;([name="3"]) : METHOD_FORMAL_PARAMETER 0, [
@Lfoo/TypeAnnBinary;([]) : METHOD_FORMAL_PARAMETER 0, [ // invisible
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final java.lang.String[] fooArray2()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/TypeAnn;([name="4"]) : METHOD_RETURN, [
@Lfoo/TypeAnnBinary;([]) : METHOD_RETURN, [ // invisible
}
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -4,10 +4,13 @@ public final class foo/Kotlin : java/lang/Object {
public final void foo(java.lang.String s, int x)
@Lfoo/TypeAnn;([name="1"]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/TypeAnn;([name="2"]) : METHOD_FORMAL_PARAMETER 1, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final void fooArray(java.lang.String[] s, java.lang.Integer[] i)
@Lfoo/TypeAnn;([name="3"]) : METHOD_FORMAL_PARAMETER 0, [
@Lfoo/TypeAnn;([name="3"]) : METHOD_FORMAL_PARAMETER 1, [
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 1
}
public abstract interface foo/TypeAnn : java/lang/Object, java/lang/annotation/Annotation {
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -24,8 +24,10 @@ public final class foo/Kotlin : java/lang/Object {
public final void foo(foo.Outer$NestedStatic s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, 0;
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Outer$NestedStatic foo()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
@Lfoo/Ann2;([]) : METHOD_RETURN, 0;
@@ -33,23 +35,29 @@ public final class foo/Kotlin : java/lang/Object {
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lfoo/Ann2;([]) : METHOD_FORMAL_PARAMETER 0, [
@Lfoo/Ann3;([]) : METHOD_FORMAL_PARAMETER 0, [0;
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Outer$NestedStatic[] fooArray()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
@Lfoo/Ann2;([]) : METHOD_RETURN, [
@Lfoo/Ann3;([]) : METHOD_RETURN, [0;
public final void fooArrayIn(java.lang.Object[] s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final foo.Outer$NestedStatic[] fooArrayOut()
@Lorg/jetbrains/annotations/Nullable;([]) // invisible
@Lfoo/Ann;([]) : METHOD_RETURN, null
public final void fooGenericIn(foo.Bar s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
public final void fooGenericOut(foo.Bar s)
@Lfoo/Ann;([]) : METHOD_FORMAL_PARAMETER 0, null
@Lorg/jetbrains/annotations/NotNull;([]) // invisible, parameter 0
}
public final class foo/Outer$NestedStatic : java/lang/Object {
@@ -1,5 +1,5 @@
// KOTLIN_CONFIGURATION_FLAGS: +JVM.EMIT_JVM_TYPE_ANNOTATIONS
// TYPE_ANNOTATIONS
// RENDER_ANNOTATIONS
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
package foo
@@ -24,7 +24,7 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
private companion object {
const val CURIOUS_ABOUT_DIRECTIVE = "// CURIOUS_ABOUT "
const val LOCAL_VARIABLE_TABLE_DIRECTIVE = "// LOCAL_VARIABLE_TABLE"
const val TYPE_ANNOTATIONS_DIRECTIVE = "// TYPE_ANNOTATIONS"
const val RENDER_ANNOTATIONS_DIRECTIVE = "// RENDER_ANNOTATIONS"
}
override fun doMultiFileTest(wholeFile: File, files: List<TestFile>) {
@@ -44,10 +44,10 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
.flatMap { it.split(',').map { it.trim() } }
val showLocalVariables = testFileLines.any { it.trim() == LOCAL_VARIABLE_TABLE_DIRECTIVE }
val showTypeAnnotations = testFileLines.any { it.trim() == TYPE_ANNOTATIONS_DIRECTIVE }
val renderAnnotations = testFileLines.any { it.trim() == RENDER_ANNOTATIONS_DIRECTIVE }
KotlinTestUtils.assertEqualsToFile(txtFile, classes.joinToString(LINE_SEPARATOR.repeat(2)) {
renderClassNode(it, printBytecodeForTheseMethods, showLocalVariables, showTypeAnnotations)
renderClassNode(it, printBytecodeForTheseMethods, showLocalVariables, renderAnnotations)
})
}
@@ -57,7 +57,7 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
clazz: ClassNode,
showBytecodeForTheseMethods: List<String>,
showLocalVariables: Boolean,
showTypeAnnotations: Boolean
renderAnnotations: Boolean
): String {
val fields = (clazz.fields ?: emptyList()).sortedBy { it.name }
val methods = (clazz.methods ?: emptyList()).sortedBy { it.name }
@@ -76,7 +76,7 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
appendLine(" {")
fields.joinTo(this, LINE_SEPARATOR.repeat(2)) { renderField(it, showTypeAnnotations).withMargin() }
fields.joinTo(this, LINE_SEPARATOR.repeat(2)) { renderField(it, renderAnnotations).withMargin() }
if (fields.isNotEmpty()) {
appendLine().appendLine()
@@ -84,22 +84,30 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
methods.joinTo(this, LINE_SEPARATOR.repeat(2)) {
val showBytecode = showBytecodeForTheseMethods.contains(it.name)
renderMethod(it, showBytecode, showLocalVariables, showTypeAnnotations).withMargin()
renderMethod(it, showBytecode, showLocalVariables, renderAnnotations).withMargin()
}
appendLine().append("}")
}
}
private fun renderField(field: FieldNode, showTypeAnnotations: Boolean) = buildString {
private fun renderField(field: FieldNode, renderAnnotations: Boolean) = buildString {
renderVisibilityModifiers(field.access)
renderModalityModifiers(field.access)
append(Type.getType(field.desc).className).append(' ')
append(field.name)
if (showTypeAnnotations) {
if (renderAnnotations) {
val textifier = Textifier()
val visitor = TraceFieldVisitor(textifier)
field.visibleAnnotations?.forEach {
it.accept(visitor.visitAnnotation(it.desc, true))
}
field.invisibleAnnotations?.forEach {
it.accept(visitor.visitAnnotation(it.desc, false))
}
field.visibleTypeAnnotations?.forEach {
it.accept(visitor.visitTypeAnnotation(it.typeRef, it.typePath, it.desc, true))
}
@@ -116,7 +124,7 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
method: MethodNode,
showBytecode: Boolean,
showLocalVariables: Boolean,
showTypeAnnotations: Boolean
renderAnnotations: Boolean
) = buildString {
renderVisibilityModifiers(method.access)
renderModalityModifiers(method.access)
@@ -129,15 +137,45 @@ abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
"${type.className} $name"
}.joinTo(this, prefix = "(", postfix = ")")
if (showTypeAnnotations) {
if (renderAnnotations) {
val textifier = Textifier()
val visitor = TraceMethodVisitor(textifier)
method.visibleAnnotations?.forEach {
it.accept(visitor.visitAnnotation(it.desc, true))
}
method.invisibleAnnotations?.forEach {
it.accept(visitor.visitAnnotation(it.desc, false))
}
method.visibleTypeAnnotations?.forEach {
it.accept(visitor.visitTypeAnnotation(it.typeRef, it.typePath, it.desc, true))
}
method.invisibleTypeAnnotations?.forEach {
it.accept(visitor.visitTypeAnnotation(it.typeRef, it.typePath, it.desc, false))
}
method.visibleParameterAnnotations?.forEachIndexed { index, parameterAnnotations: MutableList<AnnotationNode>? ->
parameterAnnotations?.forEach {
it.accept(
visitor.visitParameterAnnotation(
index,
it.desc,
true
)
)
}
}
method.invisibleParameterAnnotations?.forEachIndexed { index, parameterAnnotations: MutableList<AnnotationNode>? ->
parameterAnnotations?.forEach {
it.accept(
visitor.visitParameterAnnotation(
index,
it.desc,
false
)
)
}
}
textifier.getText().takeIf { it.isNotEmpty() }?.let {
append("\n${textifier.getText().joinToString("").trimEnd()}")
}